4

交換:

scala> val a = "hello\nworld"
a: String = 
hello
world

scala> val b = """hello
     | world"""
b: String = 
hello
world

scala> a == b
res0: Boolean = true

ワークシート:

val a = "hello\nworld"                        //> a  : String = hello
                                              //| world

val b = """hello
world"""                                      //> b  : String = hello
                                              //| world

a == b                                        //> res0: Boolean = true

通常の Scala コード:

val a = "hello\nworld"

val b = """hello
world"""

println(a)
println(b)
println(a == b)

出力:

hello
world
hello
world
false

REPL とワークシートでは true になるのに、通常の Scala コードでは false になるのはなぜですか?


興味深いことに、bよりも 1 文字長いように見えるaので、Unicode 値を出力しました。

println(a.map(_.toInt))
println(b.map(_.toInt))

出力:

Vector(104, 101, 108, 108, 111, 10, 119, 111, 114, 108, 100)
Vector(104, 101, 108, 108, 111, 13, 10, 119, 111, 114, 108, 100)

複数行の文字列リテラルにはプラットフォームに依存する値があるということですか? WindowsでEclipseを使用しています。

4

1 に答える 1