Table API
テーブル向けヘルパーは ptool.tbl と p.tbl で利用できます。
これらの API は、1 から始まる連続した整数キーを持つ密なリストテーブルを
対象にしています。
ptool.tbl.map
Unreleased- Introduced.
ptool.tbl.map(list, fn) はリストテーブルの各要素を変換し、新しいリストを
返します。
list(table, 必須): 密なリストテーブル。fn(function, 必須):(value, index)を受け取り、nil以外を返す コールバック。- 戻り値:
table。
動作:
fnは各要素に対して順番に 1 回ずつ呼び出されます。fnがnilを返すと、結果に穴を作らずエラーになります。- 入力テーブルは変更されません。
local out = p.tbl.map({ 10, 20, 30 }, function(value, index)
return value + index
end)
print(ptool.inspect(out)) -- { 11, 22, 33 }
ptool.tbl.filter
Unreleased- Introduced.
ptool.tbl.filter(list, fn) はコールバック結果が truthy の要素だけを残し、
新しい密なリストとして返します。
list(table, 必須): 密なリストテーブル。fn(function, 必須):(value, index)を受け取るコールバック。- 戻り値:
table。
動作:
nilとfalseは現在の要素を除外します。- それ以外の Lua 値は現在の要素を保持します。
- 返されるテーブルは
1から振り直されます。
local out = p.tbl.filter({ "a", "bb", "ccc" }, function(value)
return #value >= 2
end)
print(ptool.inspect(out)) -- { "bb", "ccc" }
ptool.tbl.concat
Unreleased- Introduced.
ptool.tbl.concat(...) は 1 個以上の密なリストテーブルを結合して新しい
リストを返します。
...(table, 必須): 1 個以上の密なリストテーブル。- 戻り値:
table。
動作:
- 引数は左から右へ順に追加されます。
- 空のリストも渡せます。
- 入力テーブルは変更されません。
local out = p.tbl.concat({ 1, 2 }, { 3 }, {})
print(ptool.inspect(out)) -- { 1, 2, 3 }
ptool.tbl.join
Unreleased- Introduced.
ptool.tbl.join(...) は ptool.tbl.concat(...) の別名です。
...(table, 必須): 1 個以上の密なリストテーブル。- 戻り値:
table。
local out = p.tbl.join({ "x" }, { "y", "z" })
print(ptool.inspect(out)) -- { "x", "y", "z" }
リストのルール
ptool.tbl は現時点で密なリストテーブルのみをサポートします。
- キーは整数でなければなりません。
- キーは
1から始まる必要があります。 - キーは連続しており、欠番を含められません。
- 疎なテーブルや辞書スタイルのテーブルはエラーになります。