Déclaration de variable que je ne comprends pas en Lua

Sep 27 2020

J'étais en train de lire du Lua et de faire un petit cours pour l'utiliser avec Löve 2D, dans un exemple, ils donnent declare une variable de cette façon, ce que je ne comprends honnêtement pas:

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

J'ai essayé de google et de lire un peu, mais je n'ai pas trouvé d'endroit pour expliquer cela spécifiquement. En regardant ce qu'il dit, j'identifie l'évidence, BallDX est égal à un nombre aléatoire entre 1 et 2, mais à partir de là, je suis assez confus, qu'est-ce que cela signifie que le nombre aléatoire est égal à 1 et 100 ou -100?

Réponses

5 Coal Sep 27 2020 at 06:42

C'est un concept Lua assez intéressant

L'opérateur andrenvoie son premier argument s'il est faux; sinon, il renvoie son deuxième argument.

L'opérateur orrenvoie son premier argument s'il n'est pas faux; sinon, il renvoie son deuxième argument

Dans ce cas math.random(2) == 1 and 100 or -100se comporte exactement comme un opérateur ternaire, il peut se traduire par:

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

Par exemple, supposons que vous ayez appelé une variable cet que vous vouliez lui attribuer une valeur uniquement si la avariable est supérieure à 10, avec un opérateur ternaire, vous feriez ceci:c = a > 10 ? a : b

Dans Lua, vous utiliseriez c = a > 10 and a or b