correction table.slice & adding get_default

This commit is contained in:
Xertis 2025-02-04 19:54:01 +03:00
parent 17ce49bdf1
commit e106a31d82
2 changed files with 20 additions and 5 deletions

View File

@ -76,6 +76,12 @@ table.set_default(t: table, key: number | string, default: any) -> any | default
Позволяет безопасно получать значение по указанному ключу. Если ключ существует в таблице, метод вернет его значение. Если ключ отсутствует, метод установит его со значением **default** и вернет его. Позволяет безопасно получать значение по указанному ключу. Если ключ существует в таблице, метод вернет его значение. Если ключ отсутствует, метод установит его со значением **default** и вернет его.
```lua
table.get_default(t: table, key: number | string, default: any) -> any | default
```
Как и set аналог, позволяет безопасно получать значение по указанному ключу. Если ключ существует в таблице, метод вернет его значение. Если ключ отсутствует, метод вернёт значение **default** **без** установки нового значения в таблицу.
```lua ```lua
table.flat(t: table) -> table table.flat(t: table) -> table
``` ```
@ -89,7 +95,7 @@ table.deep_flat(t: table) -> table
Возвращает глубокую "плоскую" версию исходной таблицы. Возвращает глубокую "плоскую" версию исходной таблицы.
```lua ```lua
table.slice(arr: table, start: number | nil, stop: number | nil) -> table table.sub(arr: table, start: number | nil, stop: number | nil) -> table
``` ```
Возвращает обрезанную версию таблицы с индекса **start** до индекса **stop** включительно, при этом пары ключ-значение не сохраняются в новой таблице. При значениях **nil** начинает с **1** и заканчивает **#arr** соответственно. Возвращает обрезанную версию таблицы с индекса **start** до индекса **stop** включительно, при этом пары ключ-значение не сохраняются в новой таблице. При значениях **nil** начинает с **1** и заканчивает **#arr** соответственно.

View File

@ -169,6 +169,14 @@ function table.set_default(t, key, default)
return t[key] return t[key]
end end
function table.get_default(t, key, default)
if t[key] == nil then
return default
end
return t[key]
end
function table.flat(t) function table.flat(t)
local flat = {} local flat = {}
@ -197,17 +205,18 @@ function table.deep_flat(t)
return flat return flat
end end
function table.slice(arr, start, stop) function table.sub(arr, start, stop)
local sliced = {} local res = {}
start = start or 1 start = start or 1
stop = stop or #arr stop = stop or #arr
for i = start, stop do for i = start, stop do
table.insert(sliced, arr[i]) table.insert(res, arr[i])
end end
return sliced return res
end end
---------------------------------------------- ----------------------------------------------
local pattern_escape_replacements = { local pattern_escape_replacements = {