メインコンテンツまでスキップ
バージョン: 現在の開発版

Table API

テーブル向けヘルパーは ptool.tblp.tbl で利用できます。

これらの API は、1 から始まる連続した整数キーを持つ密なリストテーブルを 対象にしています。

ptool.tbl.map

Unreleased - Introduced.

ptool.tbl.map(list, fn) はリストテーブルの各要素を変換し、新しいリストを 返します。

  • list (table, 必須): 密なリストテーブル。
  • fn (function, 必須): (value, index) を受け取り、nil 以外を返す コールバック。
  • 戻り値: table

動作:

  • fn は各要素に対して順番に 1 回ずつ呼び出されます。
  • fnnil を返すと、結果に穴を作らずエラーになります。
  • 入力テーブルは変更されません。
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

動作:

  • nilfalse は現在の要素を除外します。
  • それ以外の 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 から始まる必要があります。
  • キーは連続しており、欠番を含められません。
  • 疎なテーブルや辞書スタイルのテーブルはエラーになります。