メインメニューを開く

差分

Luaでディープコピーをする

663 バイト追加, 2018年1月30日 (火) 12:57
ページの作成:「Luaディープコピーがしたい。 再帰を使ったディープコピー。 <source lang="lua"> function deepcopy(orig) local orig_type = type(...」
[[Lua]]で[[ディープコピー]]がしたい。

[[再帰]]を使ったディープコピー。
<source lang="lua">
function deepcopy(orig)
local orig_type = type(orig)
local copy
if orig_type == 'table' then
copy = {}
for orig_key, orig_value in next, orig, nil do
copy[deepcopy(orig_key)] = deepcopy(orig_value)
end
setmetatable(copy, deepcopy(getmetatable(orig)))
else -- number, string, boolean, etc
copy = orig
end
return copy
end
</source>

つーか、githubに再帰を使わないディープコピーが落ちていた。
* https://gist.github.com/3985043

[[category: Lua]]
匿名利用者