2009-05-12 2 views
9

Мне было интересно, какой лучший способ форматировать строку будет в Scala. Я переопределяю метод toString для класса, и это довольно длинная и сложная строка. Я думал об использовании String.format, но у него, похоже, проблемы с Scala. Есть ли для этого функция Scala?Каков наилучший способ форматирования строки в Scala?

ответ

16

Я просто использовал его неправильно. Правильное использование - .format (parem1, parem2).

+5

В «RichString» есть что-то, что позволяет вам делать что-то приятнее здесь; в то время как только с помощью Java API, вы делаете: string.Format ("% s имеет% d зайчиков", имя, bunnyCount) Вы можете сделать следующее: "% s имеет% d зайчиков" .format (имя , bunnyCount) Или даже использовать его как оператор: «% s имеет% d bunnies» формат (имя, bunnyCount) – Calum

+1

Вот как я его использую. – Rayne

2

Дело в том, что на самом деле оно реализовано с использованием отражения (с версии 2.2.4). Он делегирует Java API, но отражение добавляет довольно значительные накладные расходы к сравнительно второстепенному вызову метода. Возможно, вы захотите рассмотреть конкатенацию строк в стиле Java только по соображениям производительности. Насколько я понимаю, Scala версия 2.8.0 должна решить эту проблему.

+5

Теперь только комично сложный формат: def format (args: Any *): String = java.lang.String.format (self, args.toArray [Any] .asInstanceOf [Array [AnyRef]]: _ *) – extempore

+0

Глядя на источник 2.9.1, это исправлено. 'StringLike.format (args: * Any)' теперь просто обертывает 'java.lang.String.format'. – mtsz

3

Как насчет хорошего старого java.text.MessageFormat?

Смежные вопросы