Lua 中的变量声明我不理解

我正在阅读一些 Lua 代码,并进行一些与 Löve 2D 的配合使用的小课程,在一个示例中,他们这样声明一个变量,但是我脑子里完全不理解:

ballDX = math.random(2) == 1 and 100 or -100

我尝试谷歌和查找一些信息,但是没有找到专门解释这个的地方。根据它的意思,我识别出一个明显的事实,BallDX 等于一个介于 1 和 2 之间的随机数,但从那里起我就感到非常困惑了,什么意思,随机数等于1和100或-100?

点赞
用户13955436
用户13955436

这是 Lua 的一种有趣概念

运算符 and 如果其第一个参数为假,则返回第一个参数;否则,返回第二个参数。

运算符 or 如果其第一个参数不为假,则返回第一个参数;否则,返回第二个参数。

在这个例子中,math.random(2) == 1 and 100 or -100 的行为就像一个三目运算符,可以转换为:

“如果 math.random(2) 等于 1,则设置 ballDX 为 100,否则设置 ballDX 为 -100。”

例如,假设你有一个叫做 c 的变量,并且你只想在 a 变量大于 10 时给它赋值,使用三目运算符你会这样做: c = a > 10 ? a : b

在 Lua 中,你可以使用 c = a > 10 and a or b

2020-09-26 23:42:00