scalaのcharとstringの比較で??となった話
Scalaでたまにコード書くんですが、charとstringの違い知らなかったので(というかほぼchar使ったことなかった)メモ
驚いたのが
val str = "aaa" println(str(0) == "a")
これってfalseなんですよね。
こんな感じのwarningがこっそり出てて
> warning: comparing values of types Int and java.lang.String using `==' will always yield false
で意味わからん...と思ったらstr(0)はstr.charAt(0)でStringをcharに変換した上で0文字目を出力するらしく、返り値がchar型なんですよね。
というわけで以下まとめ
object Sample extends App { val numStr = "123" println(numStr(0)) // 1 println(numStr(0) == "1") // false println(numStr(0) == '1') // true println(numStr(0).getClass) // char println("1".getClass) // class java.lang.String println("1"(0).getClass) // char println('1'.getClass) // char }
普通に知らんかった