为什么字符串插值在这种情况下不起作用?

时间:2013-12-13 14:57:25

标签: scala

以下插值字符串有什么问题?编译器抱怨无法找到符号str

private def colorGreen(str: String) = s"\u001B[32m$str\u001B[0m" // does not work
private def colorGreen(str: String) = s"\u001B[32m${str}\u001B[0m" // works

1 个答案:

答案 0 :(得分:3)

显然,Scala字符串插值器会自动在s"\u001B[32m$str\u001B[0m"中附加unicode(即使它意味着<ESC>)。因此,它会查找名为str\u001B的变量。

原则上你可以进行以下插值工作:

private def colorGreen(str\u001B: String) = s"\u001B[32m$str\u001B[0m"