編集:明確な投稿と例に関して、Luaで必要な参照のタイプなどはありません。変数が別の変数を参照するようにします。Lua では、変数は単に値の名前です。それでおしまい。
以下は、同じテーブル値を参照する と の両方をb = a
残すため、機能します。a
b
a = { value = "Testing 1,2,3" }
b = a
-- b and a now refer to the same table
print(a.value) -- Testing 1,2,3
print(b.value) -- Testing 1,2,3
a = { value = "Duck" }
-- a now refers to a different table; b is unaffected
print(a.value) -- Duck
print(b.value) -- Testing 1,2,3
Lua でのすべての変数の割り当ては、参照によるものと考えることができます。
これは、技術的には、テーブル、関数、コルーチン、および文字列に当てはまります。数値、ブール値、および nil についても同様です。これらは不変の型であるため、プログラムに関する限り、違いはありません。
例えば:
t = {}
b = true
s = "testing 1,2,3"
f = function() end
t2 = t -- t2 refers to the same table
t2.foo = "Donut"
print(t.foo) -- Donut
s2 = s -- s2 refers to the same string as s
f2 = f -- f2 refers to the same function as f
b2 = b -- b2 contains a copy of b's value, but since it's immutable there's no practical difference
-- so on and so forth --
短いバージョン: これは変更可能な型 (Lua ではユーザーデータとテーブル) に対してのみ実用的な意味を持ちます。どちらの場合も、割り当ては値ではなく参照をコピーしています (つまり、オブジェクトのクローンやコピーではなく、ポインターの割り当てです)。