什么是在Scala中格式化字符串的最佳方法?

9

我在想在Scala中格式化字符串的最佳方法是什么。我正在为一个类重新实现toString方法,这是一个相当长且复杂的字符串。我考虑使用String.format,但它似乎在Scala中存在问题。是否有原生的Scala函数可以做到这一点?

3个回答

16

我只是使用方法不正确。正确的用法是.format(参数1, 参数2)。


5
RichString中有一个东西可以让你做一些更好的事情,而仅使用Java API时,你需要这样做: String.format( "%s has %d bunnies", name, bunnyCount )你可以这样做: "%s has %d bunnies".format( name, bunnyCount )甚至可以将其用作运算符: "%s has %d bunnies" format ( name, bunnyCount ) - Calum

3
如何使用经典的java.text.MessageFormat呢?

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]]: _*) - psp
查看2.9.1版本的源代码,此问题已得到解决。StringLike.format(args: *Any)现在只是简单地包装了java.lang.String.format - mtsz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接