0
Stream.unfold
を使用して、エリクサーでフィボナッチシーケンスを表示する例を以下に示します。それは{f1, {f2, f1+f2}}
だけでなく{f2, f1+f2}
でf1
を提供する必要がないのはなぜElixir Stream.unfold新しい状態を設定する
Stream.unfold({0,1}, fn {f1,f2} -> {f1, {f2, f1+f2}} end) |> Enum.take(15)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
?そのため、著者上記のコードの説明で
は言う:
新しい状態がそう {F1、F2}の初期状態は、{F2、F1の新たな状態となり、シーケンスダウン一方を移動させます+ f2}。
f1
が{f2, f1 + f2}
が展開動作は、次の反復のために必要状態ある間に、消費者にストリームすることによって得られなければならない値であるためだ
は、以下の部分でとても '、すみません{F1、{F2、F1 + F2}}' - 'f1 = f2(現在の反復の)'と 'f2 = f1 + f2(次の反復のため)'でしょうか? (基本的には入れ子になっています) – kirqe
状態が '{a、b}'の場合、次の状態は '{b、a + b}'であり、現在得られる値は 'a'です。 ( 'a'と' b'は 'f1'と' f2' IMOよりも少し簡単です。) – Dogbert