我正在阅读一些 Lua 并做了一些将它与 Löve 2D 一起使用的课程,在一个示例中,他们以这种方式声明了一个变量,老实说,我不明白:
ballDX = math.random(2) == 1 and 100 or -100
我试图谷歌并阅读了一些但还没有找到专门解释这一点的地方。看看它所说的,我确定了显而易见的,BallDX 等于 1 和 2 之间的随机数,但从那里我变得很困惑,随机数等于 1 和 100 或 -100 是什么意思?
这是一个有点有趣的 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