AND 在 Lua 中,它是如何处理的?
AND in Lua, how is it processed?
中看到了这段代码
print(x == "yes" and "YES!" or x)
上下文:
local function test(x)
print(x == "yes" and "YES!" or x)
-- rather than if x == "yes" then print("YES!") else print(x) end
end
" x == "yes" 和 "YES!" 到底发生了什么?
为什么打印 "YES!" or (x) 而不是 "true" or (x) ?
编辑:
是不是像:
X == "yes" -- > true
true and (value) -- > value
print( (x == "yes") and value)
所以检查 x 的值 "yes" 结果为 true,将 true 添加到一个值给出该值并打印此过程打印该值,对吗?
来自docs:
The operator and returns its first argument if it is false; otherwise, it returns its second argument.
因此,true and "YES!"
的计算结果为 "YES!"
。
这个方案之所以可行,是因为如果第一个参数是假的,整个表达式都会变成假的(与第一个参数相同);否则它将与第二个参数相同,当且仅当为真将使整个表达式为真。
print(x == "yes" and "YES!" or x)
上下文:
local function test(x)
print(x == "yes" and "YES!" or x)
-- rather than if x == "yes" then print("YES!") else print(x) end
end
" x == "yes" 和 "YES!" 到底发生了什么? 为什么打印 "YES!" or (x) 而不是 "true" or (x) ?
编辑:
是不是像:
X == "yes" -- > true
true and (value) -- > value
print( (x == "yes") and value)
所以检查 x 的值 "yes" 结果为 true,将 true 添加到一个值给出该值并打印此过程打印该值,对吗?
来自docs:
The operator and returns its first argument if it is false; otherwise, it returns its second argument.
因此,true and "YES!"
的计算结果为 "YES!"
。
这个方案之所以可行,是因为如果第一个参数是假的,整个表达式都会变成假的(与第一个参数相同);否则它将与第二个参数相同,当且仅当为真将使整个表达式为真。