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

我是 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?

谢谢您。

敬礼, Serban

点赞
用户107090
用户107090

使用 square = Square:init(2,3,4) 是因为使用了 : 语法定义或调用的函数是方法,它们会有一个隐藏的 self 参数:Square:init(2,3,4) 等同于 Square.init(Square,2,3,4)

2016-03-27 11:37:45