List.Generate

構文

List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list

詳細

指定された関数を使って、値の一覧を生成します。 initial 関数を使うと、開始候補値を生成し、それを condition に対してテストすることができます。 候補値が承認されると、結果一覧の一部として返され、新たに承認された値を next に渡すことで次の候補値が生成されます。 候補値が condition と一致しない場合、一覧生成プロセスは停止します。 省略可能なパラメーターである selector は、結果一覧の項目を変換するために指定することもできます。

例 1

10 から始まり、1 ずつ減数を繰り返し、各項目が 0 より大きいことを確認して一覧を作成します。

使用方法

List.Generate(() => 10, each _ > 0, each _ - 1)

出力

{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}

例 2

X と y を含むレコードのリストを生成します。ここで、x は値、y はリストです。 x は 10 未満で、リスト y 内の項目の数を表す必要があります。 リストが生成された後、x 値のみを返します。

使用方法

List.Generate(
    () => [x = 1, y = {}],
    each [x] < 10,
    each [x = List.Count([y]), y = [y] & {x}],
    each [x]
)

出力

{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}