2009-05-12 4 views
9

Ich fragte mich, was der beste Weg wäre, eine Zeichenfolge in Scala zu formatieren. Ich implementiere die toString-Methode für eine Klasse neu und es ist eine ziemlich lange und komplexe Zeichenfolge. Ich dachte über die Verwendung von String.format nach, aber es scheint Probleme mit Scala zu haben. Gibt es dafür eine native Scala-Funktion?Was ist der beste Weg, um eine Zeichenkette in Scala zu formatieren?

Antwort

16

Ich habe es einfach falsch verwendet. Korrekte Verwendung ist .format (parem1, parem2).

+5

Es gibt eine Sache in 'RichString', die Sie hier etwas nettere Sachen machen können; während nur die Java-API tun Sie: String.format ("% s% d Hasen hat", name, bunnyCount) Sie folgendes tun: .format (Name "% s% d Hasen hat" , bunnyCount) Oder sogar als Operator verwenden: "% s hat% d hasen" format (name, bunnyCount) – Calum

+1

So benutze ich es. – Rayne

2

Die Sache, auf die man mit String#format achten sollte, ist die Tatsache, dass sie tatsächlich mit Reflektion implementiert wird (ab v2.7.4). Es delegiert an die Java-API, aber die Reflektion fügt einem vergleichsweise geringen Methodenaufruf einen ziemlich hohen Aufwand hinzu. Möglicherweise möchten Sie die String-Verkettung im Java-Stil nur aus Performance-Gründen in Betracht ziehen. Wie ich es verstehe, sollte Scala Version 2.8.0 dieses Problem lösen.

+5

Das einst komisch überkomplizierte Format ist jetzt nur noch: def Format (args: Beliebig *): String = java.lang.String.format (selbst, args.toArray [Beliebige] .asInstanceOf [Array [AnyRef]]: _ *) – extempore

+0

Mit Blick auf die Quelle von 2.9.1 ist dies behoben. 'StringLike.format (args: * Any)' umschließt nun einfach 'java.lang.String.format'. – mtsz

3

Wie wäre es mit guten alten java.text.MessageFormat?

Verwandte Themen