2009-05-12 28 views
9

Tôi đã tự hỏi cách tốt nhất để định dạng một chuỗi sẽ là gì trong Scala. Tôi đang reimplementing phương thức toString cho một lớp, và nó là một chuỗi khá dài và phức tạp. Tôi nghĩ về việc sử dụng String.format nhưng có vẻ như có vấn đề với Scala. Có một chức năng Scala bản địa để làm điều này?Cách tốt nhất để định dạng một chuỗi trong Scala là gì?

Trả lời

16

Tôi đơn giản sử dụng sai. Sử dụng đúng là .format (parem1, parem2).

+5

Có một điều trong 'RichString' cho phép bạn thực hiện một số công cụ đẹp hơn ở đây, mặc dù; trong khi chỉ sử dụng Java API bạn cần làm: String.format ("% s có% d thỏ", tên, bunnyCount) Bạn có thể làm như sau: "% s có% d thỏ" .format (tên , bunnyCount) Hoặc thậm chí sử dụng nó làm nhà điều hành: "% s có% d bunnies" định dạng (name, bunnyCount) – Calum

+1

Đó là cách tôi đang sử dụng nó. – Rayne

2

Điều cần chú ý với String#format là thực tế rằng nó thực sự được triển khai bằng cách sử dụng sự phản chiếu (như của v2.7.4). Nó đại diện cho Java API, nhưng sự phản chiếu thêm một chi phí khá quan trọng cho một cuộc gọi phương thức tương đối nhỏ. Bạn có thể muốn xem xét ghép nối chuỗi kiểu Java, chỉ vì lý do hiệu suất. Như tôi đã hiểu, phiên bản Scala 2.8.0 sẽ giải quyết vấn đề này.

+5

Định dạng quá phức tạp một lần bây giờ chỉ là: định dạng def (args: Any *): String = java.lang.String.format (self, args.toArray [Any] .asInstanceOf [Array [AnyRef]]: _ *) – extempore

+0

Nhìn vào nguồn của 2.9.1 này là cố định. 'StringLike.format (args: * Any)' bây giờ chỉ đơn giản là kết thúc 'java.lang.String.format'. – mtsz

3

Làm thế nào về tốt cũ java.text.MessageFormat?

Các vấn đề liên quan