🔁

Dynamoサンプル:繰り返し

2022/07/01に公開

Dynamoで繰り返すには

繰り返しだから「for」とか「While」だよね、とか思ってしまう、そこのアナタ(というか、私)。その考え方は捨てましょう、Dynamoでは邪魔です。

基本は「値を1つ」入れるところに、「リスト(配列)」を入れるだけです。これを取得できれば、「繰り返しよ、サヨナラ👋」になれます。

値を1つで試す

慣れているノードならいいのですけど、慣れてないなら、まずは値を1つ入れてためしてください。成功したら次のステップ、リストを入れます。

値にリストを入れる

xに1~10のリストを入れてみます。1+1、2+1・・・10+1、と繰り返されています。基本はこれだけ。

値に2つのリストを入れる

yにも1~10のリストを入れてみます。同じ行が組み合わされて、1+1、2+2・・・10+10と繰り返されています。

うまくいかない場合

リストがややこしい(階層がある)と、意図した通りにならなかったりします。

たとえば下記のような場合、
1+1、2+2・・・10+10
という結果を意図してたのに、
1+1、1+2・・・1+10
となっている!

そういう場合は、watchでリストの階層をよく確認してください。
それぞれのリストの「1番最初の階層」の「1行目、2行目・・・」の組み合わせが基本です。

ここでは、
@L2階層の1行目「1」と、`@L3'階層の1行目「0List」、つまり、「1、2・・・10」を組み合わせてるので、
1+1、1+2・・・1+10
となっています。Dynamoは正直。

同じ階層を示してあげたいので、xyを右クリックして、「レベルを使用」を選択し、リストの階層を選択します。

うまくいかない場合2

リストがややこしい場合は、レベルを使用すればいいのね!
といっても、それではうまくいかない場合もあり。

私としては、
「11、22、33・・・」「61、72、83・・・」としたい。

こうしたい↓(実際は無理)

リストの数が同じでないと、「レベルを使用」ではどうにもならんという例。
リストの数が5と10なので、意図通りに組み合ってくれない。
(私の知識が足りないだけかもしれない)

「レベルを使用」を色々操作してみるけど、「そうじゃねぇ」みたいな感じ。

つまり、リストの数を合わせてあげる。
ここでは「1、2・・・5」を2回繰り返して、リストの数を10にする。
これで解決。

リストの階層がなくなったよ!という場合は、右クリックして「リスト構造を保持」を選択する。

@L1とか@L2とか分けわからん!という場合は、とにかくリストの階層構造を合わせてあげればよい。

リストを〇回繰り返してリストを作成するのは、List.Cycleを使用。

Discussion