Lua 对象 - 构造函数中的错误初始化
Lua object - bad initialization in constructor
我是 Lua 和 Corona 的初学者。我有一个名为 Square 的 class,我想对其进行初始化。这是我的 class:
Square = {x=0, y=0, colorNumber=0}
Square.__index = Square
function Square:init(x,y,colorNumber)
local square = {} -- our new object
setmetatable(square,Square)
square.x = x -- initialize our object
square.y = y -- initialize our object
square.colorNumber = colorNumber -- initialize our object
return square
end
function Square:hello()
print ("Hello "..self.x.." "..self.y.." "..self.colorNumber)
local n = 10
local t0 = clock()
while clock() - t0 <= n do end
end
-- create and use a Square
square = Square.init(2,3,4)
square:hello()
问题是 hello() 函数打印错误。它打印
Hello 3 4 0
它不应该打印
Hello 2 3 4
?
为什么 x 初始化为 y 的值,y 为 colorNumber,colorNumber 为 0?
谢谢。
此致,
塞尔维亚人
使用square = Square:init(2,3,4)
,因为使用:
语法定义或调用的函数是方法,并采用隐藏参数self
:Square:init(2,3,4)
与[=14=相同].
我是 Lua 和 Corona 的初学者。我有一个名为 Square 的 class,我想对其进行初始化。这是我的 class:
Square = {x=0, y=0, colorNumber=0}
Square.__index = Square
function Square:init(x,y,colorNumber)
local square = {} -- our new object
setmetatable(square,Square)
square.x = x -- initialize our object
square.y = y -- initialize our object
square.colorNumber = colorNumber -- initialize our object
return square
end
function Square:hello()
print ("Hello "..self.x.." "..self.y.." "..self.colorNumber)
local n = 10
local t0 = clock()
while clock() - t0 <= n do end
end
-- create and use a Square
square = Square.init(2,3,4)
square:hello()
问题是 hello() 函数打印错误。它打印
Hello 3 4 0
它不应该打印
Hello 2 3 4
?
为什么 x 初始化为 y 的值,y 为 colorNumber,colorNumber 为 0?
谢谢。
此致, 塞尔维亚人
使用square = Square:init(2,3,4)
,因为使用:
语法定义或调用的函数是方法,并采用隐藏参数self
:Square:init(2,3,4)
与[=14=相同].