title |
---|
Lua 中的 and 和 or 的特殊用法 |
Table of Contents
[TOC]
语言的特殊性, 总是让人捉摸不透. 最近又开始玩 WoW 的了(经典版), 很多插件都有 bug, 遂操起了老本行, 找找🐞.
发现很多在赋值时大量使用了 and
和 or
的此种操作...心里便难过了起来. 犹如当年的 i++ / ++i / ++(i++) 等等的噩梦...🤕
Lua 中的 假
仅为 nil
或者 false
其余一切东西都视为 真
若第一个变量为假
, 则返回它, 否则返回第二个变量
value = a and b
等价于
if not a then
value = a
else
value = b
end
🌰:
print(3 and 5)
print(0 and 5)
print(nil and 6)
print(false and 6)
print(false or nil)
结果为:
5
5
nil
false
false
若第一个变量为真
, 则返回它, 否则返回第二个变量
value = a and b
等价于
if a then
value = a
else
value = b
end
🌰:
print(2 or 7)
print(0 or 3)
print(nil or 9)
print(false or 9)
print(false or nil)
结果为
2
0
9
9
nil
返回值是 从左到右第一个为假的值
, 若全都不为假, 则返回最后一个变量
返回值是 从左到右第一个为真的值
, 若全都不为真, 则返回最后一个变量