2009-05-12 12 views
9

Me preguntaba cuál sería la mejor forma de formatear una cadena en Scala. Estoy volviendo a implementar el método toString para una clase, y es una cadena bastante larga y compleja. Pensé en usar String.format pero parece tener problemas con Scala. ¿Hay una función nativa de Scala para hacer esto?¿Cuál es la mejor forma de formatear una cuerda en Scala?

Respuesta

16

Simplemente lo estaba usando mal. El uso correcto es .format (parem1, parem2).

+5

Hay una cosa en 'RichString' que te permite hacer algunas cosas más agradables aquí; mientras que solo el uso de la API de Java que hacer: String.Format ("% s tiene% d conejitos", nombre, bunnyCount) Puede hacer lo siguiente: "% s tiene% d conejitos" .formato (nombre , bunnyCount) O incluso utilícelo como operador: "% s tiene el formato% d bunnies" (name, bunnyCount) – Calum

+1

Así es como lo estoy usando. – Rayne

2

Lo que hay que tener en cuenta con String#format es el hecho de que en realidad se implementa utilizando la reflexión (a partir de v2.7.4). Se delega a la API de Java, pero la reflexión agrega una sobrecarga bastante significativa a una llamada de método comparativamente menor. Es posible que desee considerar la concatenación de cadenas al estilo Java, solo por motivos de rendimiento. Tal como lo entiendo, la versión 2.8.0 de Scala debería resolver este problema.

+5

El formato que una vez fue excesivamente complicado ahora solo es: def format (args: Any *): String = java.lang.String.format (self, args.toArray [Any] .asInstanceOf [Array [AnyRef]]: _ *) – extempore

+0

Mirando la fuente de 2.9.1 esto es fijo. 'StringLike.format (args: * Any)' ahora simplemente envuelve 'java.lang.String.format'. – mtsz

3

¿Qué hay de bueno viejo java.text.MessageFormat?

Cuestiones relacionadas