Variablendeklaration, die ich in Lua nicht verstehe

Sep 27 2020

Ich habe einige Lua gelesen und einen kleinen Kurs gemacht, um sie mit Löve 2D zu verwenden. In einem Beispiel geben sie eine Variable auf diese Weise deklarieren, was ich ehrlich gesagt nicht verstehe:

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

Ich habe versucht zu googeln und ein bisschen zu lesen, aber keinen Ort gefunden, um das speziell zu erklären. Wenn ich mir anschaue, was darin steht, dass ich das Offensichtliche identifiziere, ist BallDX gleich einer Zufallszahl zwischen 1 und 2, aber von da an bin ich ziemlich verwirrt. Was bedeutet es, dass die Zufallszahl gleich 1 und 100 oder -100 ist?

Antworten

5 Coal Sep 27 2020 at 06:42

Dies ist ein irgendwie interessantes Lua-Konzept

Der Operator andgibt sein erstes Argument zurück, wenn es falsch ist. Andernfalls wird das zweite Argument zurückgegeben.

Der Operator orgibt sein erstes Argument zurück, wenn es nicht falsch ist. Andernfalls wird das zweite Argument zurückgegeben

In diesem Fall math.random(2) == 1 and 100 or -100verhält es sich genau wie ein ternärer Operator und kann übersetzt werden in:

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

Angenommen, Sie haben eine Variable namens aufgerufen cund möchten ihr nur dann einen Wert zuweisen, wenn die aVariable über 10 liegt. Mit einem ternären Operator würden Sie dies tun:c = a > 10 ? a : b

In Lua würden Sie verwenden c = a > 10 and a or b