7

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"
}

そして、素敵なエラーメッセージが表示されます:

<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"
                                                     ^

ここで s-string の何が問題になっていますか?

4

1 に答える 1