代码之家  ›  专栏  ›  技术社区  ›  Serban Stoenescu

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

  •  2
  • Serban Stoenescu  · 技术社区  · 8 年前

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

    ?

    为什么用y值初始化x,用colorNumber初始化y,用color Number初始化0?

    谢谢

    当做 塞尔邦

    1 回复  |  直到 8 年前
        1
  •  2
  •   lhf    8 年前

    使用 square = Square:init(2,3,4) 因为使用 : 语法是方法并接受隐藏参数 self : Square:init(2,3,4) Square.init(Square,2,3,4) .