Lua reference function from inside table inside of the table (Using "self" inside of table)

Lua reference function from inside table inside of the table (Using "self" inside of table)

假设我有一个 table A 和其中的函数 C 和 B,我可以通过引用自身在函数 C 中调用 table 函数 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),但它更安全(将确切的 table 引用作为第一个参数传递)。

由于您在 table 构造函数表达式中定义 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