lua中定义变量用and和or连接

原文链接

最近在写代码中看到lua定义变量有local a = value1 and value2的操作,有些疑问,在此记录一下:
当连接两个操作数时,
1、对于运算符and,假设它的第一个操作数为假,就返回第一个操作数,否则返回第二个操作数
注:lua中只视nil和false为假,其它所有都为真,包括0也为真
例:

local a = 3 and 2
--都为真返回第二个操作数,返回2
local a = nil and 2
--前假后真返回第一个操作数,返回nil
local a = 2 and nil
--前真后假返回第二个操作数,返回nil
local a = false and nil
--都为假返回第一个操作数,返回false

 

2、对于运算符or,假设它的第一个操作数为真,就返回第一个操作数,否则返回第二个操作数
例:

local a = 2 or 3
--都为真,返回第一个数,返回2
local a = nil or 2
--前假后真返回第二个操作数,返回2
local a = 2 or nil
--前真后假返回第一个操作数,返回2
local a = false or nil
--都为假返回第二个操作数,返回nil

 

3、and连接多个操作数时,返回从左至右第一个为假的操作数,若都不为假,返回最后一个操作数


4、or连接多个操作数时,返回从左至右第一个为真的操作数,若都不为真,返回最后一个操作数

posted @ 2022-05-23 17:23  青丝·旅人  阅读(125)  评论(0编辑  收藏  举报