0__*_*0__ 7 scala string-interpolation
它让我发疯,字符串插值有一些特殊的规则,不允许从a + b样式直接转换:
// ok
def test(f: java.io.File) = {
val abs = f.getAbsoluteFile
val isF = abs.isFile
"select " + (if (isF) "file" else "folder") +"\"" + abs.getName +"\" of folder"
}
// fail
def test(f: java.io.File) = {
val abs = f.getAbsoluteFile
val isF = abs.isFile
s"select ${if (isF) "file" else "folder"} \"${abs.getName}\" of folder"
}
Run Code Online (Sandbox Code Playgroud)
然后有一个可爱的错误消息:
<console>:38: error: value $ is not a member of String
s"select ${if (isF) "file" else "folder"} \"${abs.getName}\" of folder of the front window"
^
Run Code Online (Sandbox Code Playgroud)
这里的s-string有什么问题?
Sha*_*nds 17
问题是,您不能将未转义的引号留在单引号字符串中,就像在文件和文件夹中放置引号一样.尝试使用三引号字符串,它允许在其中使用未转义的引号(它仅由第二个三引号终止):
s"""select ${if (isF) "file" else "folder"} "${abs.getName}" of folder"""
Run Code Online (Sandbox Code Playgroud)