概要
リストの各要素に「何番目か」の番号を付けるノードです。後段の list_map /
list_filter では、Map 内の元値を item_item、付与した番号を
item_index として参照できます。
使い方のポイント
- 実は
list_map/list_filterは生リストのままでもindexが使えるので、 多くの場合このノードは不要。番号付きの Map 構造そのものを下流に 残したい時(デバッグ表示・後で複数回使う)に挟む - 「偶数番目だけ」「先頭以外」のような index 条件は
list_filterの式 (index % 2 == 0等)で直接書ける
関連ノード
list_map/list_filter— 番号を使う先(式内indexでも可)list_zip— 2本のリストを番号で対応付ける版list_slice— 番号範囲での切り出し
まず大事なこと
- このノードは、元の値に 「何番目か」 を付けるノードです
- 後段の
ListMapやListFilterでindexを使いたい時によく使います
まずはこの例
入力リストがこうだとします。
["red", "blue", "green"]
このとき entries はこうなります。
[
{ "index": 0, "item": "red" },
{ "index": 1, "item": "blue" },
{ "index": 2, "item": "green" }
]
count はこうです。
count = 3
後段からどう見えるか
ListMap や ListFilter にこの entries を入れると、各要素は Map なので
item_item: Map 内の元の値item_index: Enumerate が Map 内へ保存した番号index: ListMap / ListFilter が処理している外側リスト上の現在位置
として式で使えます。並べ替えていない直後は item_index と index が同じ値でも、
意味は別です。
例:
item_item + item_index
index % 2 == 0
どういう時に使うか
- 候補に番号を付けて debug したい時
- index を使って条件分岐したい時
ListMap/ListFilterから、保存済み番号item_indexと外側位置indexを区別して読みたい時
注意
- 各要素の型は保持されるので、
item側には元の値がそのまま入ります Palette入力はList<Color>として列挙します