假设我有一个表A,其中有C和B函数,我可以通过引用self来调用函数C中的表A函数B吗?
A = {
B = function()
print("I am B")
end,
C = function()
print("I am C\nand")
__self.B();
end,
}
A.C();
感谢您的时间。
答案 0 :(得分:3)
是的,使用:
方法调用。
A:C()
:
相当于A.C(A)
,但它更安全(将确切的表引用作为第一个参数传递)。
由于您在表构造函数表达式中定义了A.C
方法,因此无法使用此语法:
function table:prop
您必须将自我功能(在代码中用作__self
)声明为函数的第一个参数。
A = {
B = function()
print("I am B")
end,
C = function(__self)
print("I am C\nand")
__self.B();
end
};
如果您不想指定__self
作为第一个参数,请在分配A.C
后使用以下特殊函数语法定义A
:
function A:C()
print("I am C\nand");
self.B();
end
这使得第一个参数为self
。