LoginSignup
16
3

More than 5 years have passed since last update.

Kotlinではエルビス演算子よりも、先に四則演算が優先される

Last updated at Posted at 2018-12-03

この記事は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 になります。

他の問題も下のスライドのアップしてますので、よろしければどうぞ

16
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
3