2016-03-27 22 views
2

私はLuaとCoronaの初心者です。スクエアと呼ばれるクラスがありますが、これを初期化します。これは私のクラスです:Luaオブジェクト - コンストラクタの初期化が正しくありません

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 2 3 4 

を印刷すべきではない

Hello 3 4 0 

を出力しますか?

なぜxはyの値で初期化され、yはcolorNumberで、colorNumberは0ですか?

ありがとうございました。

よろしく、 セルバン

答えて

2

使用square = Square:init(2,3,4):構文で定義されたか、呼び出された関数はメソッドであるため、そして隠された引数self取る:Square:init(2,3,4)Square.init(Square,2,3,4)と同じです。

+0

恐ろしい!それはうまくいった。ありがとう! –

関連する問題