首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Elixir编写自己的流函数?

如何用Elixir编写自己的流函数?
EN

Stack Overflow用户
提问于 2016-09-17 20:10:52
回答 1查看 102关注 0票数 1

我已经编写了一个简单的Stream.unfold函数,当我像这样调用它时,它工作得很好:

代码语言:javascript
复制
a = Stream.unfold({1,2,3}, &my_unfold_func) |> Stream.take(5)

然而,我似乎找不到一种方法来实现一个包装器,允许我直接调用我的函数,例如:

代码语言:javascript
复制
a = my_unfold_wrapper() |> Stream.take(5)

我试过的是:

代码语言:javascript
复制
def my_unfold_wrapper(), do: Stream.unfold({1,2,3}, &my_unfold_func)

当我运行这段代码时,我得到了错误:

代码语言:javascript
复制
 #Stream<[enum: #Function<35.27730995/2 in Stream.unfold/2>,
 funs: [#Function<38.27730995/1 in Stream.take/2>]]>
 [Finished in 0.7s]

问题似乎是Stream.take()返回了另一个流,我需要执行该流才能将其转换为数组。用Enum.take替换Stream.take似乎可以做到这一点,这就留下了如何执行流的问题。

EN

回答 1

Stack Overflow用户

发布于 2016-09-17 23:23:01

我想我已经破解了,算是吧。下面的代码实现了我想要的功能:

代码语言:javascript
复制
Foobar.my_unfold_wrapper()
|> Stream.take(10)
|> Stream.into(File.stream!("output.txt", [:write, :utf8]))
|> Stream.run

我现在遇到的唯一问题是输出被连接到一个巨大的行上--这是我在另一个单独的SO问题中提出的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39546647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档