短絡評価
CoddyのLuaジャーニー「基礎」セクションの一部。レッスン 23/90。
Lua が and 演算子と or 演算子を評価するとき、「短絡評価」と呼ばれる規則を使います。これは、最終的な結果が分かった時点で Lua が評価を止め、式の一部を完全にスキップすることがあるという意味です。
and 演算子では、最初の条件が false の場合、Lua は2つ目の条件を確認しなくても式全体が false になるとすぐに判断します。
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- LuaはplayerAlive (false)だけを確認し、hasWeaponは評価しません同様に、or演算子では、最初の条件がtrueの場合、Luaは結果がtrueになるとわかるため、2つ目の条件をスキップします。
hasKey = true
hasPassword = false
canEnter = hasKey or hasPassword
-- LuaはhasKey (true)だけを確認し、hasPasswordは評価しません短絡評価は処理を省くだけではありません。どのコードが実行されるかを決めます。ここで2つ目のチェックが安全なのは、lives が nil のときにLuaがそれをスキップするからです。
lives = nil -- まだ値がない
canPlay = lives ~= nil and lives > 0
print(canPlay) -- false短絡評価がなければ、lives > 0 によってエラーが発生し、プログラムは停止します。nil は数値と比較できないからです。この方法はよく使います。値を使う前に、その値が存在することを確認しましょう。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ