🍀

Kotlinの標準APIを知る【Boolean編】

2021/12/06に公開

Kotlin初心者から中級者へのレベルアップを目指して、Kotlinの標準APIの仕様を理解し、気になった点や記録しておいた方が良さそうだと感じた点をまとめていこうというシリーズです(※これからシリーズにするつもりです。)

まずは簡単そうなところから

Boolean

公式APIドキュメント
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/

学び

not()

KotlinのBooleanクラスではいわゆる否定論理演算子(!)と同じことがnot()でできます

val falseValue = true.not()
// 関数の戻りとして返ってきたBooleanにもそのままメソッドチェーンで書けます
fun isOK(): Boolean {
    return true
}
isOK().not()

上手く使っていくことでコードが読みやすくなると思います。

or , and

中置記法をサポートしたメソッドとして一般的なところでorandがあります

val result_1 = true or false
val result_2 = true and true

こんな風に書けます

おおっ!! Javaで

val result_1 = true || false
val result_2 = true && true

こう書いてたのをより文章として読める(読みやすい)形で書けそうだ!いいね!って思ったのもつかの間・・・

こちらのメソッドは短絡評価されません。

fun conditionExprA(): Boolean {
    println("eval A")
    return true
}

fun conditionExprB(): Boolean {
    println("eval B")
    return true
}

fun main() {
    val result_1 = conditionExprA() || conditionExprB()
    println("=========================")
    val result_2 = conditionExprA() or conditionExprB()
}

実行結果は以下のようになります。

eval A
=========================
eval A
eval B

つまり常に関数の両辺が評価されてしまうため論理演算子(&&||)とは完全に等価とはならない模様です。

まとめ

標準APIの内部仕様を見たりドキュメントを読むことは得られるものが多いです。
自分はそのことにやっと気が付いたレベルですが・・・これからも継続していきたいです。

Discussion