8

C# には がthisあり、VB にはME. Luaに相当するものは何ですか?

Roblox でスクリプト クラスの親を参照しようとしています。

4

4 に答える 4

15

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
于 2009-07-01T02:25:40.537 に答える
11

グレッグがすでに指摘したように、あなたが探している名前はself.

ただし、Lua は純粋に手続き型または関数型の言語である以上、OOP 言語ではないことに注意してください。OOP 設計を実装するためのすべての低レベル メカニズムを提供するだけです。設計原則の 1 つは、「ポリシーではなくメカニズムを提供する」と表現されています。そのため、実行している環境が継承を使用していること、または特定のオブジェクトの親を見つけることができることを保証する方法はありません。

OOP 機能に関連する Lua マニュアル、Lua でのプログラミング、および Wiki のセクションを確認することをお勧めします。

于 2009-07-01T06:27:37.270 に答える
4

Lua では、「self」値が必要になります。ただし、サンドボックス化された ROBLOX を使用しています。各スクリプトは独自のスレッドで実行され、スクリプトを参照するには、「スクリプト」、つまり script.Parent を使用する必要があります。

于 2013-03-18T21:54:10.820 に答える
2
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 を追加すると、親の親が返されます。

于 2014-07-01T02:38:14.690 に答える