diff --git a/doc/ru/scripting/extensions.md b/doc/ru/scripting/extensions.md index d4502f64..d0ddd365 100644 --- a/doc/ru/scripting/extensions.md +++ b/doc/ru/scripting/extensions.md @@ -10,6 +10,12 @@ table.copy(t: table) -> table Создаёт и возвращает копию переданной таблицы путём создания новой и копирования в неё всех элементов из переданной. +```lua +table.deep_copy(t: table) -> table +``` + +Функция глубокого копирования создает полную копию исходной таблицы, включая все её вложенные таблицы. + ```lua table.count_pairs(t: table) -> integer ``` diff --git a/res/scripts/stdmin.lua b/res/scripts/stdmin.lua index 14479c7d..13934e06 100644 --- a/res/scripts/stdmin.lua +++ b/res/scripts/stdmin.lua @@ -63,6 +63,20 @@ function table.copy(t) return copied end +function table.deep_copy(t) + local copied = {} + + for k, v in pairs(t) do + if type(v) == "table" then + copied[k] = table.deep_copy(v) + else + copied[k] = v + end + end + + return copied +end + function table.count_pairs(t) local count = 0