"this" 在 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 引用呢?

例如,同样的 person 对象在 Lua 中:

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

据我所知,在 Lua 中使用 self 替代 this,但我无法让上面的示例工作。

点赞
用户1190388
用户1190388

首先,分号完全不需要。

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

而且,字符串连接使用 .. 而不是 +

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

这里有一个工作的codepad示例

2014-05-07 23:38:30
用户3614776
用户3614776
本地变量 person = {
name = 'Saucy Jack',
speak = function(self)
    print("Hi, my name is " .. self.name);
end
};
person:speak()

http://codepad.org/eXwWNKme

欢迎来到 Corona IRC。

2014-05-08 04:11:21