真偽値として真・偽と評価される値
CoddyのLuaジャーニー「基礎」セクションの一部。レッスン 24/90。
and、or、notのような論理演算子を使うとき、Luaは論理コンテキストで何が「true」または「false」と見なされるかを判断する必要があります。この概念はtruthyとfalsyの値と呼ばれ、Luaは多くのほかのプログラミング言語とは異なる方法でこれを扱います。
Luaでは、偽とみなされる値(論理演算でfalseとして扱われる値)は2つだけです。
print(false and "skipped") -- false を出力する: false は偽とみなされる
print(nil and "skipped") -- nil を出力する: nil は偽とみなされるandとorは、trueやfalseだけではなく、オペランドのどちらかを返すことに注意してください。a and bは、aが偽とみなされる場合はaを、それ以外の場合はbを返します。a or bは、aが真とみなされる場合はaを、それ以外の場合はbを返します。そのため、上の2行はfalseとnilを出力し、下の各行はそのテキストを出力します。
Luaでは、それ以外のすべての値は真として扱われます(論理演算ではtrueとして扱われます)。他の言語を使っている人には意外かもしれない値も含まれます。
print(0 and "This will print") -- Luaでは0は真として扱われます!
print("" and "This will print") -- 空文字列は真として扱われます!
print({} and "This will print") -- 空のテーブルは真として扱われます!自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ