このようにテーブルをクリアすると、予期される動作が発生します。
table1 = { "a" }
table1 = {}
print(unpack(table1)) -- results in printing a blank line
しかし、関数内で同じことを行う場合、次のことは必要ありません。
table1 = { "a" }
function cleartest (x)
x = {}
print(unpack(x))
end
cleartest(table1) -- results in printing a blank line
print(unpack(table1)) -- results in "a"
この動作の原因は何ですか?
編集:Luaでテーブルを渡す方法を明確にするため。x は table1 のローカル「コピー」ではありません。「値は参照」タイプであるため、実際には実際のテーブルへの参照です。例えば:
table1 = { "a" }
function xisref (x)
x[2] = "b"
end
xisref(table1)
print(unpack(table1)) -- results in printing "a b" thus x is a reference to the actual table