예시는 다음과 같다. ruby와 python과 비슷하다. 

 

주의할 점은 toString으로 변환할 때이다. 

 

val symbol1 = 'Symbol
val symbol2 = 'Symbol1
println(symbol1 eq symbol2) // false

val symbol3 = Symbol("symbol")
val symbol4 = Symbol("symbol")
println(symbol3 eq symbol4) // true

symbol3 match {
  case Symbol("symbol") => println("ok") // ok
  case _ => println("xx")
}

println('Symbol.toString == symbol1.toString) // true
println('Symbol.toString eq symbol1.toString) // false

자바 때문에 깜박할 수 있는데.

스칼라의 ==는 자바의 equals이다 (값 비교), 따로서 당연히 true

스칼라의 eq는 자바의 주소 값 비교이다. 따라서 당연히 false.

 

 

 

보통 scala에서는 java String을 intern한 값이기에 ==, eq 모두 같은 값이다.

 

val a = "a"
val b = "a"

println(a == b) // true
println(a eq b) // true
Posted by '김용환'
,