Lua对象 - 构造函数中的初始化错误

时间:2016-03-27 11:21:20

标签: lua corona

我是Lua和Corona的初学者。我有一个名为Square的类,我想初始化它。这是我的班级:

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初始化?

感谢。

此致 谢尔班

1 个答案:

答案 0 :(得分:2)

使用square = Square:init(2,3,4)因为使用:语法定义或调用的函数是方法并采用隐藏参数selfSquare:init(2,3,4)Square.init(Square,2,3,4)相同。