【问题标题】:Lua reference function from inside table inside of the table (Using "self" inside of table)表内表内的 Lua 引用函数(使用表内的“self”)
【发布时间】: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();

感谢您的宝贵时间。

【问题讨论】:

    标签: lua lua-table


    【解决方案1】:

    是的,使用: 方法调用。

    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

    【讨论】:

    • 这就是我要找的,谢谢
    • 只需要等待冷却时间,直到您可以接受答案。
    • 变量可以是任何东西,而不仅仅是__self。
    • @warspyking 是的,问题中是这样用的,反正我会更新的
    • 哦,我把“你必须声明 __self 作为它的第一个参数”解释为你必须,这是一个要求
    猜你喜欢
    • 2015-02-26
    • 2017-02-09
    • 2011-10-12
    • 2012-03-11
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多