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** и вернет его.
```lua
table.get_default(t: table, key: number | string, default: any) -> any | default
```
Как и set аналог, позволяет безопасно получать значение по указанному ключу. Если ключ существует в таблице, метод вернет его значение. Если ключ отсутствует, метод вернёт значение **default** **без** установки нового значения в таблицу.
```lua
table.flat(t: table) -> table
```
@ -89,7 +95,7 @@ table.deep_flat(t: table) -> table
Возвращает глубокую "плоскую" версию исходной таблицы.
```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** соответственно.

View File

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