推荐答案
Lua 的逻辑运算符有以下三种:
- and:逻辑与运算符,当两个操作数都为真时返回真,否则返回假。
- or:逻辑或运算符,当至少有一个操作数为真时返回真,否则返回假。
- not:逻辑非运算符,对操作数取反,真变假,假变真。
本题详细解读
逻辑与运算符 (and)
- 语法:
a and b - 行为:
- 如果
a为false或nil,则返回a。 - 否则返回
b。
- 如果
- 示例:
print(true and false) -- 输出 false print(false and true) -- 输出 false print(true and true) -- 输出 true print(false and false) -- 输出 false
逻辑或运算符 (or)
- 语法:
a or b - 行为:
- 如果
a为true或非nil,则返回a。 - 否则返回
b。
- 如果
- 示例:
print(true or false) -- 输出 true print(false or true) -- 输出 true print(true or true) -- 输出 true print(false or false) -- 输出 false
逻辑非运算符 (not)
- 语法:
not a - 行为:
- 如果
a为false或nil,则返回true。 - 否则返回
false。
- 如果
- 示例:
print(not true) -- 输出 false print(not false) -- 输出 true print(not nil) -- 输出 true print(not 0) -- 输出 false
短路求值
Lua 的逻辑运算符支持短路求值(short-circuit evaluation),即在 and 和 or 运算中,如果第一个操作数已经能够确定整个表达式的结果,则不会计算第二个操作数。
- 示例:
// www.javascriptcn.com code example function foo() print("foo called") return true end function bar() print("bar called") return false end print(foo() and bar()) -- 输出 "foo called" 和 "bar called",然后输出 false print(bar() or foo()) -- 输出 "bar called" 和 "foo called",然后输出 true
注意事项
- Lua 中的逻辑运算符不仅可以用于布尔值,还可以用于任何类型的值。
nil和false被视为假,其他所有值被视为真。 - 逻辑运算符的返回值不一定是布尔值,而是根据操作数的值返回其中一个操作数。