Frage

Okay, diese Frage scheint wirklich dumm zu sein, aber mein Punkt ist, dass wenn man einen Blick auf 2.7.6 Scala nehmen API, sie mappingToString Methode veraltet gemacht hatten. Daher sollte es für den Druck individuell formatiert Karte elegantere Alternative sein. Da für fast jeden Zweck, sind mit Äquivalenzverfahren mkString in Karte wirklich praktisch.

Was denkt ihr darüber? Was ist Ihre Codierung Schnipsel eine Karte außer println für den Druck?

War es hilfreich?

Lösung

Die mappingToString Methode wurde verwendet, um zu ändern, wie jedes Paar Schlüssel / Wert wurde auf String übersetzt, die dann von der toString Methode verwendet wurden.

Ich denke, das ist eine schlechte Passform. Es fügt eine Veränderlichkeit zu einer ansonsten unveränderlichen Datenstruktur, für eine Sache. Wenn Sie spezielle Druckanforderungen haben, dann sind Sie wahrscheinlich besser dran, sie in einer anderen Klasse setzen.

Andere Tipps

mappingToString war spezifisch für Map.

Mit dem neuen Kollektionen Rahmen in Scala2.8, ein Map kann von jedem IterableLike iteriert wird, die TraversableLike .

Die Methode mkstring (bereits dort in 2,7 Iterable ) verwendet werden soll, dann.

Sehen Sie diesen Blog-Eintrag "Strings" von Jesse rel="nofollow, für 2.7 mkstring() Beispiele:

/*
   Making use of raw strings to create a multi line string
   I add a | at the beginning of each line so that we can line up the quote nicely 
   in source code then later strip it from the string using stripMargin
*/
scala> val quote = """|I  don-t consider myself a pessimist.                                                                                                 
     |                |I think of a pessimist as someone who is waiting for it to rain.
     |                |And I feel soaked to the skin.
     | 
     |                |Leonard Cohen"""
quote: java.lang.String = 
|I don-t consider myself a pessimist. 
                      |I think of a pessimist as someone who is waiting for it to rain.
                      |And I feel soaked to the skin.

                      |Leonard Cohen

// capilize the first character of each line
scala> val capitalized = quote.lines.
     |                         map( _.trim.capitalize).mkString("\n")
capitalized: String = 
|I don-t consider myself a pessimist.
|I think of a pessimist as someone who is waiting for it to rain.
|And I feel soaked to the skin.

|Leonard Cohen

// remove the margin of each line
scala> quote.stripMargin        
res1: String = 
I don-t consider myself a pessimist. 
I think of a pessimist as someone who is waiting for it to rain.
And I feel soaked to the skin.

Leonard Cohen

// this is silly.  I reverse the order of each word but keep the words in order
scala> quote.stripMargin.         
     |       lines.               
     |       map( _.split(" ").   
     |              map(_.reverse).
     |              mkString (" ")).
     |      mkString("\n")
res16: String = 
I t-nod redisnoc flesym a .tsimissep
I kniht fo a tsimissep sa enoemos ohw si gnitiaw rof ti ot .niar
dnA I leef dekaos ot eht .niks

dranoeL nehoC

Sie auch Iterator.map() mit mkString(), zum Beispiel zum Erstellen einer Abfrage-String aus einem map[String,String] kombinieren können:

val queryString = updatedMap.map(pair => pair._1+"="+pair._2).mkString("?","&","")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top