在表内部使用“self”引用表 A 函数B

假设我有一个名为A的表,里面有函数C和函数B,那么我可以通过引用self在函数C内部调用A表的函数B吗?

A = {
    B = function()
        print("我是B")
    end,
    C = function()
        print("我是C\n")
        __self.B();
    end,
}
A.C();

感谢您的阅读。

点赞
用户88888888
用户88888888

是的,可以使用:方法调用。

A:C()

:A.C(A)等效,但更安全(将确切的表引用作为第一个参数传递)。

由于您正在在表构造函数表达式中定义A.C方法,因此无法使用此语法:

function table:prop

所以您必须将self特性(在您的代码中用作__self)声明为函数的第一个参数。

A = {
    B = function()
        print("我是B")
    end,

    C = function(__self)
        print("我是C\n和")
        __self.B();
    end
};

如果您不想将__self指定为第一个参数,请在分配A之后使用此特殊的函数语法定义A.C

function A:C()
    print("我是C\n和");
    self.B();
end

这使第一个参数成为self

2016-10-18 13:20:58