the industrial

都内で働くITエンジニアの日記

ScalaのString Interpolation内でダブルコーテーションを使おうとしたらハマった件についてのメモ

ScalaのString Interpolationってとても便利なんだけど、内部でダブルコーテーションを使おうと思ったら(エスケープしようと思ったら)ハマったのでメモ。

これは『「s""」の内部でバックスラッシュに於けるエスケープが効いてないよう!うへえ!』みたいな感じのScalaのバグってことでいいのだろうか?

[SI-6476] \" escape does not work with string interpolation - Scala

Scala version

$ scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

やりたかったこと

こんな感じのことを期待してたんだけど

scala> println(s"\"hoge\"")
"hoge"

実際はこんな風にエラー

scala> println(s"\"hoge\"")
<console>:1: error: ')' expected but string literal found.
       println(s"\"hoge\"")
                        ^

""" を使えばとりあえずはOKっぽい。

scala> println(s"""\"hoge\"""")
\"hoge\"

scala> println(s""""hoge"""")
"hoge"

scala> val name:String = "omiend"
name: String = omiend

scala> println(s""""${name}"""")
"omiend"