この記事はZOZOテクノロジーズその2 Advent Calendar 20184日目の記事になります。
エルビス演算子は最後に評価される
例えば下記のコードを実行したときに print()
で出力される結果は何でしょう。
fun main() {
val x: Int? = 2
val y: Int = 3
val sum = x?:0 + y
println(sum)
}
- a) 3
- b) 5
- c) 2
- d) 0
答えは c) です!!!
解説
タイトルにある通り、エルビス演算子より、四則演算が優先されます。
つまり、
val x: Int? = 2
val y: Int = 3
val sum = x?:0 + y
↓
val sum = x ?: 0 + 3
↓
val sum = x ?: 3
↓
sumは `xはnullではない` ので答えが `2` です。
短いですが、こういうのも頭の片隅に置いておくとちょっとしたところで役立つかもしれません。
余談
Kotlinは他にも面白い問題があるので、紹介します。
fun main() {
hello()
}
fun hello(): Boolean {
println(print("Hello") == print("World") == return false)
}
- a) HelloWorld
- b) HelloWorldfalse
- c) HelloWorldtrue
- d) will not compile
答えは a) です!
Kotlinでは print
は実行された瞬間コンソールに中の文字を出力します。
そしたら HelloWorld
と表示され、一番外の println
が実行される前に return
されるので、外の println
は実行されません。
ちなみに、 print("Hello") == print("World")
は true
になります。
他の問題も下のスライドのアップしてますので、よろしければどうぞ