Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function ';这';对Lua中函数调用方的引用_Function_Lua - Fatal编程技术网

Function ';这';对Lua中函数调用方的引用

Function ';这';对Lua中函数调用方的引用,function,lua,Function,Lua,我想知道如何在Lua函数中获得这个引用。我习惯于在函数(比如JavaScript)中有一个this引用,它引用调用它的对象 例如,在JavaScript中: var person = { 'name' : 'Saucy Jack', 'speak' : function() { console.log("Hi, my name is " + this.name); }; }; 在该示例中,当调用person.speak()时,函数体中的此将引用perso

我想知道如何在Lua函数中获得
这个
引用。我习惯于在函数(比如JavaScript)中有一个
this
引用,它引用调用它的对象

例如,在JavaScript中:

var person = {
    'name' : 'Saucy Jack',
    'speak' : function() {
        console.log("Hi, my name is " + this.name);
    };
};
在该示例中,当调用
person.speak()
时,函数体中的
将引用
person
(调用函数)。如何在Lua函数中获取对该
的引用

例如,Lua中相同的
person
对象:

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

根据我在Lua中的理解,使用了
self
而不是
this
,但我无法让上面的示例起作用。

首先,根本不需要分号

接下来,您需要使用
self
为隐式调用定义表体外部的函数

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

local person = {
    name = 'Saucy Jack',
}
function person:speak()  -- or function person.speak(self)
    print("Hi, my name is "..self.name)
end
这是一个例子


欢迎使用corona irc

实际上,您可以在调用中隐式使用self,但在函数定义中显式使用:“speak=function(self)print”(“您好,我的名字是”+self.name);端'-1;解释为什么在这种情况下他需要声明
self
local person = {
name = 'Saucy Jack',
speak = function(self) 
    print("Hi, my name is " .. self.name);
end
};
person:speak()