2
から元のテーブルアドレスを取得私はmt2
テーブルのアドレスを有する(可変t
で)このLuaのコード方法__index
内部mt1
でLuaは - ネストメタテーブル__index方法
local mt1 = {
__index = function (t, k)
return "key doesn't exist"
end
}
local mt2 = {
x = 15
}
setmetatable(mt2, mt1)
mt2.__index = mt2
local A = setmetatable({ a = 10}, mt2)
local B = setmetatable({ b = 10}, mt2)
print("A")
print(A) --prints address of A
print("B")
print(B) --prints address of B
print("mt2")
print(mt2) --prints address of mt2
print("mt1")
print(mt1) --prints address of mt1
print("___________")
print(A.a) -- prints 10
print(A.x) -- prints 15
print(A.c) -- prints "key doesn't exist"
print(B.b) -- prints 10
print(A.c) -- prints "key doesn't exist"
を有します。元の呼び出し表A
またはB
のアドレスを取得できますか?
@EgorSkriptunoffニース、私は 'Ax'のローカル' MT2 = {X = 15} '、それはもはやプリントを' 15'がない場合は...唯一の問題は今、..私は質問 –
を編集しました@ EgorSkriptunoffパーフェクト..ありがとうございました。回答としてお寄せください –
用語は "参照"ではなく "アドレス"です。アドレスは受動的なデータですが、参照は変数によって保持され、オブジェクトを到達可能としてマークするためにガベージコレクタによって使用されます。そして、いいえ、一般的に参照を取得することはできません。@EgorSkriptunoffがmt1で示すように、参照を保持する必要があります。 –