C# には がthis
あり、VB にはME
. Luaに相当するものは何ですか?
Roblox でスクリプト クラスの親を参照しようとしています。
Lua ドキュメント セクション 2.5.9から、自己参照は通常self
次のとおりです。
コロン構文は、メソッド、つまり暗黙的な追加のパラメーターを持つ関数を定義するために使用されます
self
。したがって、ステートメントfunction t.a.b.c:f (params) body end
のシンタックスシュガーです
t.a.b.c.f = function (self, params) body end
グレッグがすでに指摘したように、あなたが探している名前はself
.
ただし、Lua は純粋に手続き型または関数型の言語である以上、OOP 言語ではないことに注意してください。OOP 設計を実装するためのすべての低レベル メカニズムを提供するだけです。設計原則の 1 つは、「ポリシーではなくメカニズムを提供する」と表現されています。そのため、実行している環境が継承を使用していること、または特定のオブジェクトの親を見つけることができることを保証する方法はありません。
OOP 機能に関連する Lua マニュアル、Lua でのプログラミング、および Wiki のセクションを確認することをお勧めします。
Lua では、「self」値が必要になります。ただし、サンドボックス化された ROBLOX を使用しています。各スクリプトは独自のスレッドで実行され、スクリプトを参照するには、「スクリプト」、つまり script.Parent を使用する必要があります。
local Table = {}
Table.Var = "Testing"
function Table:Test()
print(self.Var)
end
Table:Test()
また
local Table = {}
Table.Var = "Testing"
function Table.Test(self)
print(self.Var)
end
どちらの関数もまったく同じことを行います。
- 編集 -
それはテーブルでのみ機能します。スクリプトの親を取得しようとしている場合は、script.Parent を使用する必要があります。
--注意 script.Parent は、スクリプトが配置されている場所を返します。別の親 script.Parent.Parent を追加すると、親の親が返されます。