我在 Lua 中不明白的变量声明

jsd*_*zma 2 lua

我正在阅读一些 Lua 并做了一些将它与 Löve 2D 一起使用的课程,在一个示例中,他们以这种方式声明了一个变量,老实说,我不明白:

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

我试图谷歌并阅读了一些但还没有找到专门解释这一点的地方。看看它所说的,我确定了显而易见的,BallDX 等于 1 和 2 之间的随机数,但从那里我变得很困惑,随机数等于 1 和 100 或 -100 是什么意思?

Coa*_*oal 5

这是一个有点有趣的 Lua 概念

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

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

在这种情况下math.random(2) == 1 and 100 or -100,它的行为与三元运算符完全一样,它可以转换为:

If math.random(2) equals to 1, set ballDX = 100, otherwise set ballDX = -100

例如,假设您有一个名为 的变量c,并且您只想在a变量大于 10 时为其分配一个值,您可以使用三元运算符执行以下操作:c = a > 10 ? a : b

在 Lua 中你会使用 c = a > 10 and a or b