kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

初学者向けの Scala Tips (6) - 文字列リテラル中のインデントを整える

これは、気の利いたIDEであれば自動でやってくれるのであえて覚える必要はないのですが、一応。

Scalaでは、複数行に渡る文字列リテラルを次のようにして書く事ができます*1

val foo = """
class Foo {
  def foo(): Unit = {
    println("foo")
  }
}
"""

ここで、見やすさのためにdefの部分をもう一段インデントして、かつ、出力される文字列は変更したくないときがあります。そのようなときは、

val foo = """
  |class Foo {
  |  def foo(): Unit = {
  |    println("foo")
  |  }
  |}""".stripMargin

とすると良いです。これで、|の部分が除去されて、その次のカラムが行頭になるような複数行文字列が生成されます。これはScalaで複数行文字列を意図通りに出力するときのイディオムとして覚えておくと良いでしょう(IntelliJ IDEAなどではこれを自動で出力してくれるますが)。

*1:何故かここではGithub Flavored Markdownがうまく効いていないようです…