2009-05-12 2 views
9

私は、文字列をフォーマットする最も良い方法がScalaでどうなるのだろうかと思っていました。私は、クラスのtoStringメソッドを実装しています、それはかなり長く複雑な文字列です。私はString.formatの使用について考えましたが、Scalaには問題があるようです。これを行うネイティブのScala関数はありますか?Scalaで文字列を書式設定する最良の方法は何ですか?

答えて

16

私は単にそれを間違って使用していました。正しい使用法は.format(parem1、parem2)です。

+5

「RichString」には、ここでもっとうまくいくものがあります。ただのJava APIを使用したのに対し、あなたが実行します。 "%sは%d個のウサギを持っている" .format(名前: String.Formatのは、あなたが次のことを行うことができ (、名前、bunnyCount "%sは%d個のウサギを持っています") 、bunnyCount) "%sは%dのバニーがあります"形式(名前、bunnyCount) – Calum

+1

これは私が使っている方法です。 – Rayne

2

String#formatで気を付けることは、実際にはリフレクション(v2.7.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

関連する問題