2016年3月9日水曜日

Luaの論理演算子

クセがあったのでメモ。
(Programming in Luaより抜粋)

Luaの論理演算子には、

  • and
  • or
  • not
が存在する。
全ての論理演算子は、falseとnilを偽として、それ以外のすべてが真となる

and演算子

左項が偽の場合にはこれを返す。そうでなければ右項を返す。

(ex)
print(4 and 5)        -->  5
print(nil and 13)     -->  nil
print(false and 13)  -->  false

or演算子

左側が真であればこれを返す。そうでなければ右項を返す。

(ex)
print(4 or 5)         -->  4
print(false or 5)    -->  5

not演算子

常にtrueかfalseを返す。

(ex)
print(not nil)         -->  true
print(not false)     -->  true
print(not 0)          -->  false
print(not not nil)   -->  false

演算子を組み合わせた場合の例

(ex)
max = (x > y) and x or y

andはorより演算の優先順位が高いため、
「(x > y) and x」が先に演算される。

●x > yが真の場合
「(x > y) and x」は、右項である「x」を返す。
「x or y」であれば、xが数値であるため(falseやnilではないため)、
左項は真となり、maxにはxの値が代入される。

●x > yが偽の場合
「(x > y) and x」は、左項である「x > y」、つまり偽を返す。
「偽 or y」であれば、maxにはyの値が代入される。



0 件のコメント:

コメントを投稿