所以我得到了这段代码,由于某种原因,它给了我一个关于 LOVE 的空异常
function enemies_controller:spawnEnemy(x, y, rad)
enemy = {}
enemy.x = x
enemy.y = y
enemy.rad = rad
enemy.speedMulti = 1
table.insert(enemies_controller.enemies, enemy)
end
Run Code Online (Sandbox Code Playgroud)
函数像这样调用它:
enemies_controller.spawnEnemy(100, 100, 50)
Run Code Online (Sandbox Code Playgroud)
问题是,当我绘制时,敌人.rad 给了我一个空异常,因为敌人.x 接受第二个函数参数,敌人.y 接受第三个,并且没有一个接受第一个......所以我不确定什么正在发生
这是因为 using:创建了一个“self”参数。(这是一个打字快捷方式,因为很多人使用 self 参数创建函数。它没有做任何特别的事情。)
function enemies_controller:spawnEnemy(x, y, rad)
Run Code Online (Sandbox Code Playgroud)
是相同的
function enemies_controller.spawnEnemy(self, x, y, rad)
Run Code Online (Sandbox Code Playgroud)
或者换句话说:
enemies_controller.spawnEnemy = function(self, x, y, rad)
Run Code Online (Sandbox Code Playgroud)
.注意和之间的区别:。
当你调用它时,会发生类似的事情:
enemies_controller:spawnEnemy(100, 100, 50)
Run Code Online (Sandbox Code Playgroud)
是相同的:
enemies_controller.spawnEnemy(enemies_controller, 100, 100, 50)
Run Code Online (Sandbox Code Playgroud)
第一个可能是你如何调用该函数 - 他们没有其他原因用:.
如果你打电话
enemies_controller.spawnEnemy(100, 100, 50)
Run Code Online (Sandbox Code Playgroud)
然后你传递 100 as self、 100 asx和 50 asy和 nil asrad