diff --git a/doc/ru/scripting/extensions.md b/doc/ru/scripting/extensions.md index be697463..32afc52d 100644 --- a/doc/ru/scripting/extensions.md +++ b/doc/ru/scripting/extensions.md @@ -56,7 +56,7 @@ table.shuffle(t: table) -> table table.merge(t1: table, t2: table) -> table ``` -Объединяет таблицу t1 с t2. +Добавляет в таблицу **t1** значения из таблицы **t2**. Если в таблице **t2** присутствует ключ из **t1**, то значение ключа не будет изменено. ```lua table.map(t: table, func: function(indx, value) ) -> table @@ -71,10 +71,10 @@ table.filter(t: table, func: function(indx, value) ) -> table Проходится по таблице с помощью **func**, которая возвращает **true** если элемент надо сохранить и **false**, если его надо удалить. ```lua -table.set_default(t: table, key: number | string, default: any) -> any | nil +table.set_default(t: table, key: number | string, default: any) -> any | default ``` -Позволяет получить значение по ключу, если он существует, или установить и вернуть **nil**, если ключ отсутствует. +Позволяет безопасно получать значение по указанному ключу. Если ключ существует в таблице, метод вернет его значение. Если ключ отсутствует, метод установит его со значением **default** и вернет его. ```lua table.flat(t: table) -> table @@ -88,6 +88,12 @@ table.deep_flat(t: table) -> table Возвращает глубокую "плоскую" версию исходной таблицы. +```lua +table.sum(t) -> number +``` + +Возвращает сумму всех элементов, игнорируя пары ключ-значение. + ```lua table.tostring(t: table) -> string ``` @@ -200,12 +206,6 @@ math.round(num: number, [опционально] places: num) -> number Возвращает округлённое значение num до указанного количества знаков после запятой places. -```lua -math.sum(x: number, ...) -> number -``` - -Возвращает сумму всех принимаемых аргументов. - ## Дополнительные глобальные функции В этом же скрипте также определены и другие глобальные функции которые доступны для использования. Ниже их список diff --git a/res/scripts/stdmin.lua b/res/scripts/stdmin.lua index cd57df8e..7a264540 100644 --- a/res/scripts/stdmin.lua +++ b/res/scripts/stdmin.lua @@ -64,16 +64,6 @@ function math.round(num, places) return math.floor(num * mult + 0.5) / mult end -function math.sum(...) - local sum = 0 - - for _, v in ipairs({...}) do - sum = sum + v - end - - return sum -end - ---------------------------------------------- function table.copy(t) @@ -156,7 +146,7 @@ end function table.set_default(t, key, default) if t[key] == nil then t[key] = default - return + return default end return t[key] @@ -189,6 +179,17 @@ function table.deep_flat(t) return flat end + +function table.sum(t) + local sum = 0 + + for _, v in ipairs(t) do + sum = sum + v + end + + return sum +end + ---------------------------------------------- local pattern_escape_replacements = {