【发布时间】:2016-10-20 16:48:10
【问题描述】:
假设我有一个表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();
感谢您的宝贵时间。
【问题讨论】:
假设我有一个表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();
感谢您的宝贵时间。
【问题讨论】:
是的,使用: 方法调用。
A:C()
: 等效于A.C(A),但它更安全(将准确的表引用作为第一个参数传递)。
由于您在表构造函数表达式中定义 A.C 方法并且您不能使用此语法:
function table:prop
您必须将 self 功能(在您的代码中用作 __self)声明为函数的第一个参数。
A = {
B = function()
print("I am B")
end,
C = function(__self)
print("I am C\nand")
__self.B();
end
};
如果您不想将__self 指定为第一个参数,请在分配A 之后定义A.C,使用以下特殊函数语法:
function A:C()
print("I am C\nand");
self.B();
end
这使得第一个参数为self。
【讨论】: