3

Lua言語では、次のようなものを使用してテーブル内の関数を定義できます。

table = { myfunction = function(x) return x end }

このようにメソッドを作成するのではなく、この方法でメソッドを作成できるかどうか疑問に思いました

function table:mymethod() ... end

この方法でメソッドを追加することは可能だと確信していますが、このテクニックの固有名がわからず、「lua」や「methods」などを探しているのが見つかりません。

私の意図は、テーブルをなどの関数に渡すことmyfunction({data= stuff, name = returnedName, ?method?init() = stuff})です。

残念ながら、colonメソッド宣言でいくつかの組み合わせを試しましたが、どれも有効な構文ではありません。

だから...ここの誰かがたまたま知っていますか?

4

1 に答える 1

5

確かに:table:method()は単なる構文糖衣ですが、引数table.method(self)に注意する必要があります。selfもし、するなら

tab={f=function(x)return x end }

これは実際には機能するため、機能しtab:f(x)ません。したがって、の代わりにtab.f(tab,x)戻ります。tabx

オブジェクト指向またはPiLの第16章に関するluaユーザーwikiをご覧ください。

于 2011-01-21T09:46:23.030 に答える