2016-10-18 13 views
3

テーブルAとテーブル内の関数CとBを持っているとしましょう。関数Cの中でテーブルAの関数Bを呼び出すことはできますか?自己を参照することによって?テーブル内のテーブル内部からのルア参照関数

A = { 
    B = function() 
     print("I am B") 
    end, 
    C = function() 
     print("I am C\nand") 
     __self.B(); 
    end, 
} 
A.C(); 

ありがとうございます。

答えて

2

はい、:メソッド呼び出しを使用します。

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 
}; 

場合は、この特殊な関数の構文で、Aを割り当てた後A.Cを定義し、最初のパラメータとして__selfを指定する必要はありません:

function A:C() 
    print("I am C\nand"); 
    self.B(); 
end 

これは最初のパラメータがselfなります。

+1

これは私が探していたものです。ありがとうございました – August

+0

答えを受け入れるまで待ち時間を待たなければなりませんでした。 – August

+1

変数には__selfだけでなく何でもかまいません。 – warspyking

関連する問題