🌟 | 現在、 鉄壁ヘッドショットには対応済みです。 鉄壁HSは通常HSと同じダメージになります。LMG及びDMR、チャージライフル、ハンマーポイント弾を除き、すべてのダメージ値が一致していることを確認しています。 |
「モジュール:TableExtensions」の版間の差分
ナビゲーションに移動
検索に移動
(関数table.valuesがkeyのケースを正しく扱えていない問題の修正) |
(型チェックの追加) |
||
(同じ利用者による、間の5版が非表示) | |||
1行目: | 1行目: | ||
function table.isEmpty(tbl) | function table.isEmpty(tbl) | ||
assert(type(tbl) == 'table', debug.traceback()) | |||
return not next(tbl) | return not next(tbl) | ||
end | end | ||
function table.keys(tbl) | function table.keys(tbl) | ||
assert(type(tbl) == 'table', debug.traceback()) | |||
local keyset = {} | local keyset = {} | ||
for key, _ in pairs(tbl) do | for key, _ in pairs(tbl) do | ||
12行目: | 16行目: | ||
function table.values(tbl) | function table.values(tbl) | ||
assert(type(tbl) == 'table', debug.traceback()) | |||
local valueset = {} | local valueset = {} | ||
for _, value in pairs(tbl) do | for _, value in pairs(tbl) do | ||
20行目: | 26行目: | ||
function table.entries(tbl) | function table.entries(tbl) | ||
assert(type(tbl) == 'table', debug.traceback()) | |||
local entryset = {} | local entryset = {} | ||
for key, value in pairs(tbl) do | for key, value in pairs(tbl) do | ||
28行目: | 36行目: | ||
function table.map(tbl, fn) | function table.map(tbl, fn) | ||
assert(type(tbl) == 'table', debug.traceback()) | |||
assert(type(fn) == 'function', debug.traceback()) | |||
local ret = {} | local ret = {} | ||
for key, value in pairs(tbl) do | for key, value in pairs(tbl) do | ||
ret[key] = fn(key, value) | ret[key] = fn(key, value) | ||
end | |||
return ret | |||
end | |||
function table.mapKeys(tbl, fn) | |||
assert(type(tbl) == 'table', debug.traceback()) | |||
assert(type(fn) == 'function', debug.traceback()) | |||
local ret = {} | |||
for key, value in pairs(tbl) do | |||
ret[fn(key)] = value | |||
end | |||
return ret | |||
end | |||
function table.mapValues(tbl, fn) | |||
assert(type(tbl) == 'table', debug.traceback()) | |||
assert(type(fn) == 'function', debug.traceback()) | |||
local ret = {} | |||
for key, value in pairs(tbl) do | |||
ret[key] = fn(value) | |||
end | end | ||
return ret | return ret | ||
36行目: | 69行目: | ||
function table.filter(tbl, fn) | function table.filter(tbl, fn) | ||
assert(type(tbl) == 'table', debug.traceback()) | |||
assert(type(fn) == 'function', debug.traceback()) | |||
local ret = {} | local ret = {} | ||
for idx, value in ipairs(tbl) do | |||
if fn(idx, value) then | |||
ret[#ret + 1] = value | |||
end | |||
end | |||
for key, value in pairs(tbl) do | for key, value in pairs(tbl) do | ||
if fn(key, value) then | if type(key) ~= 'number' and fn(key, value) then | ||
ret[key] = value | ret[key] = value | ||
end | end | ||
46行目: | 87行目: | ||
function table.removeKey(tbl, key) | function table.removeKey(tbl, key) | ||
assert(type(tbl) == 'table', debug.traceback()) | |||
local element = tbl[key] | local element = tbl[key] | ||
tbl[key] = nil | tbl[key] = nil | ||
return element | return element | ||
end | |||
function table.reverse(tbl) | |||
assert(type(tbl) == 'table', debug.traceback()) | |||
local n = #tbl | |||
local i = 1 | |||
while i < n do | |||
tbl[i], tbl[n] = tbl[n], tbl[i] | |||
i = i + 1 | |||
n = n - 1 | |||
end | |||
end | |||
function table.reversed(tbl) | |||
assert(type(tbl) == 'table', debug.traceback()) | |||
local ret = {} | |||
for i = #tbl, 1, -1 do | |||
ret[#ret + 1] = tbl[i] | |||
end | |||
return ret | |||
end | end | ||
return table | return table |
2022年6月13日 (月) 10:41時点における最新版
このモジュールについての説明文ページを モジュール:TableExtensions/doc に作成できます
function table.isEmpty(tbl) assert(type(tbl) == 'table', debug.traceback()) return not next(tbl) end function table.keys(tbl) assert(type(tbl) == 'table', debug.traceback()) local keyset = {} for key, _ in pairs(tbl) do keyset[#keyset + 1] = key end return keyset end function table.values(tbl) assert(type(tbl) == 'table', debug.traceback()) local valueset = {} for _, value in pairs(tbl) do valueset[#valueset + 1] = value end return valueset end function table.entries(tbl) assert(type(tbl) == 'table', debug.traceback()) local entryset = {} for key, value in pairs(tbl) do entryset[#entryset + 1] = { key, value } end return entryset end function table.map(tbl, fn) assert(type(tbl) == 'table', debug.traceback()) assert(type(fn) == 'function', debug.traceback()) local ret = {} for key, value in pairs(tbl) do ret[key] = fn(key, value) end return ret end function table.mapKeys(tbl, fn) assert(type(tbl) == 'table', debug.traceback()) assert(type(fn) == 'function', debug.traceback()) local ret = {} for key, value in pairs(tbl) do ret[fn(key)] = value end return ret end function table.mapValues(tbl, fn) assert(type(tbl) == 'table', debug.traceback()) assert(type(fn) == 'function', debug.traceback()) local ret = {} for key, value in pairs(tbl) do ret[key] = fn(value) end return ret end function table.filter(tbl, fn) assert(type(tbl) == 'table', debug.traceback()) assert(type(fn) == 'function', debug.traceback()) local ret = {} for idx, value in ipairs(tbl) do if fn(idx, value) then ret[#ret + 1] = value end end for key, value in pairs(tbl) do if type(key) ~= 'number' and fn(key, value) then ret[key] = value end end return ret end function table.removeKey(tbl, key) assert(type(tbl) == 'table', debug.traceback()) local element = tbl[key] tbl[key] = nil return element end function table.reverse(tbl) assert(type(tbl) == 'table', debug.traceback()) local n = #tbl local i = 1 while i < n do tbl[i], tbl[n] = tbl[n], tbl[i] i = i + 1 n = n - 1 end end function table.reversed(tbl) assert(type(tbl) == 'table', debug.traceback()) local ret = {} for i = #tbl, 1, -1 do ret[#ret + 1] = tbl[i] end return ret end return table