私はこのようにそれを呼び出したときに正常に動作し、簡単なStream.unfold機能を、書かれている:私は自分自身のストリーム関数をElixirに書くことはできますか?
a = Stream.unfold({1,2,3}, &my_unfold_func) |> Stream.take(5)
しかし、私は私ができるようになるラッパーを実装する方法を見つけることができていないようです私の関数を直接呼び出すこのように:私が試した何
a = my_unfold_wrapper() |> Stream.take(5)
は次のとおりです。
#Stream<[enum: #Function<35.27730995/2 in Stream.unfold/2>,
funs: [#Function<38.27730995/1 in Stream.take/2>]]>
[Finished in 0.7s]
問題が流れていることのようだ:
def my_unfold_wrapper(), do: Stream.unfold({1,2,3}, &my_unfold_func)
私はこのコードを実行すると、私はエラーを取得します.take()は配列に変換するために何らかの形で実行する必要のある別のストリームを返しています。 Stream.takeをEnum.takeに置き換えることは、ストリームをどのように実行できるかという疑問を残すトリックを行うように思えます。
これはうまく見えますが、これをデバッグするにはさらに詳しい情報が必要です。取得している特定のエラーメッセージは何ですか? 'my_unfold_func'の定義を教えてください。 –
'new'コードを実行すると出力が次のようになります:#Stream <[enum:#Function <35.27730995/2 in Stream.unfold/2>、 funs:[#Function <38.27730995/1 in Stream.take/2>]]> [0.7sで終了]問題は、Stream.take()が配列に変換するために何らかの形で実行する必要がある別のストリームを返すということです。 Stream.takeをEnum.takeに置き換えることは、ストリームをどのように実行できるかという疑問を残すトリックを行うように思えます。また、どのように私はSOのコメントに新しい行を挿入できますか?すなわち、コメントを終わらせることなく? – Andy
質問を編集して、そのコメントに記入したエラー情報を含めてください。 –