2016-04-21 11 views
1

Ich versuche, dieseVersuch Tabellenwert in der Tabelle zugreifen

local ball = { 
     width = 20, 
     height = 20, 

     position = { 
      x = (game.width/2) - (width/2), -- Place the ball at the center of the screen 
      y = (game.height/2) - (height/2) 
     }, 

     velocity = 200, 
     color = { 255, 255, 255 } 
    } 

zu tun, aber Love2D sagen mir attempt to perform arithmetic on global 'width' (a nil value). Wie kann ich es reparieren?
Ich habe bereits versucht, width/2 durch ball.width/2 zu ersetzen, aber ich habe attempt to index global 'ball' (a nil value). Denken Sie daran,

Antwort

5

dass local some_name = expression entspricht:

local some_name 
some_name = expression 

Dies ermöglicht some_name in expression erscheinen. Insbesondere erlaubt es Rekursion mit lokalen Funktionen. Bis jedoch expression tatsächlich fertig ausgewertet wird, ist der Wert von some_name immer noch nil.

In Ihrer Tabelleninitialisierung ist ball also ein nil Wert. Es gibt keine Möglichkeit, auf Mitglieder einer Tabelle zuzugreifen, während diese Tabelle initialisiert wird. Sie können dies jedoch später tun:

local ball = { 
    width = 20, 
    height = 20, 


    velocity = 200, 
    color = { 255, 255, 255 } 
} 

ball.position = { 
    x = (game.width/2) - (ball.width/2), -- Place the ball at the center of the screen 
    y = (game.height/2) - (ball.height/2) 
} 
+0

Oh du hast Recht! Danke für diese nützliche Erinnerung! – Wizix

Verwandte Themen