Kotlin のコードにおいて、演算子の前後で改行をするときは、改行位置に気を付けないといけません。 不可解な不具合に悩まされたので戒めのためにメモ。
問題:次のコードを実行すると何と表示されるでしょう?
fun getVal() = 1
fun main() {
val x = 100 -
getVal()
val y = 100
- getVal()
println(x)
println(y)
}
答えは、
99
100
です。
y
の計算式の方は、末尾が演算子で終わっていないので、次の行まで計算式が続いているとみなされません。
その次の行は、getVal()
が返した値に単項演算子の -
を適用するだけの意味のないコードになります。
だから、Kotlin のコードにおいて、長い計算式を記述する場合は、必ず演算子の後で改行するように注意しなければいけません。 Java の場合は、セミコロンが出てくるまで式が続いているとみなされるので、このようなミスは発生しませんでした。
ちなみに Ruby も同じで、演算子の後ろで改行しなければいけません。
x = 100 -
1
y = 100
- 1
puts x #=> 99
puts y #=> 100
Python の場合は、そもそも演算子の前後で改行しようとするとエラーになりますね。 バックスラッシュを入れれば連結できますが。
x = 100 - \
1
y = 100 \
- 1
print(x) #=> 99
print(y) #=> 99