lua 三目运算符实现
2018-02-28 本文已影响71人
90d81be3ec65
-
预备知识
lua中逻辑运算符有and、or、not,与其他语言的逻辑运算一致;
所有运算符视false和nil为假,其他都为真;
对于and运算符,如果第一个条件为假,则返回第一个操作数,否则返回第二个操作数(注意:无论第二个操作数是什么,这和其他有些语言返回false有区别);
对于or运算符,如果第一个条件为真,则返回第一个操作数,否则返回第二个操作数,例子同上,有兴趣的小伙伴可以亲身实操一下;-- for example local a = false print(a and 1) --输出false a = nil print(a and 1) --输出nil a = true print(true and false) --输出false print(true and nil) --输出nil print(true and 1) --输出1
-
进入正题
三目运算符两种写法:- (a and {b} or {c})[1]
- a and b or c,这种写法的前提是b不为假。正如预备知识所说,当a为真的时候and操作符会返回第二个操作数b,而当b也为假的时候,or操作符会返回第二个操作数c,而不是我们想要的b,第一种写法通过给b加一层{},能够确保{b}必定为真。当程序员编码时候确认b为真,那么提倡第二种写法,简单粗暴