2016-06-17 3 views
2

У меня есть следующий класс Lua:Lua функция член класса вызова для каждого другого

-- file: myClass.lua 
local myClass = {} 
myClass.__index = myClass 

setmetatable(myClass, { 
    __call = function (cls, ...) 
     return cls.new(...) 
    end, 
}) 

function myClass.new(init_size) 
    local self = setmetatable({}, myClass) 
    self.max_size = init_size 
    return self 
end 

function myClass:set_max_size(x) 
    self.max_size = x 
    print(myClass:get_max_size()) -- <= [1] 
end 

function myClass:get_max_size() 
    return self.max_size 
end 

return myClass 

В терминале, после следующей команды, выход был не то, что я ожидал.

> myClass = require 'myClass' 
> myClassObj = myClass(5) 
> myClassObj:set_max_size(10) ---<== this line will print nil instead of 10 as expected. 

Любые идеи?

ответ

3

Как max_size не реализуется как переменная класса, но свойство экземпляра (или любой другой иностранный язык можно использовать в контексте Lua), вам нужно

self:get_max_size() 

вместо

myClass:get_max_size() 
Смежные вопросы