'这'引用Lua中的函数调用者

时间:2014-05-07 23:10:22

标签: function lua

我想知道如何在Lua函数中获得this引用。我习惯在函数内部使用this引用(比如在JavaScript中)引用调用它的对象。

例如,在JavaScript中:

var person = {
    'name' : 'Saucy Jack',
    'speak' : function() {
        console.log("Hi, my name is " + this.name);
    };
};

在该示例中,当调用person.speak()时,函数体中的this将引用person(调用该函数)。如何在Lua函数中引用this

例如,Lua中的那个person对象:

local person = {
    name = 'Saucy Jack',
    speak = function() 
        print("Hi, my name is " + self.name);
    end
};

根据我在Lua中的理解,使用了self代替this,但我无法使上述示例起作用。

2 个答案:

答案 0 :(得分:5)

首先,根本不需要分号。

接下来,您需要使用self在表格外部定义函数以进行隐式调用。

并且,使用..而非+

完成字符串连接
local person = {
    name = 'Saucy Jack',
}
function person:speak()  -- or function person.speak(self)
    print("Hi, my name is "..self.name)
end

这里是working codepad sample

答案 1 :(得分:0)

local person = {
name = 'Saucy Jack',
speak = function(self) 
    print("Hi, my name is " .. self.name);
end
};
person:speak()    

http://codepad.org/eXwWNKme 欢迎来到corona irc