lua-users home
lua-l archive

Re: false and nil

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


2018年06月06日 9:15 GMT+02:00 Viacheslav Usov <via.usov@gmail.com>:
> 1. Lua describes 'and' and 'or' is binary operator
This puts the finger on the sore spot. The manual is misleading.
Since they use short-circuit evaluation, they are not operators. They
are evaluation directives: control structures that return a value. For
boolean arguments, they happen to behave like operators would. We
really should have had '&&' and '||' for logical consitency.
Of course, from Lua 5.3 on you can try to make '&' and '|' do the job:
debug.setmetatable(true,{__band = function(a,b) return a and b end;
__bor = function(a,b) return a or b end; __bnot = function(a) return
not a end})
but the precedence then is highly confusing.

AltStyle によって変換されたページ (->オリジナル) /