当前位置:  开发笔记 > 编程语言 > 正文

在Elixir中生成无限序列

如何解决《在Elixir中生成无限序列》经验,为你挑选了1个好方法。

如何实现一个无限序列生成器,我可以使用Stream库函数进行操作?

我想用它来生成前n个素数.我有一个有效的递归方法,但我喜欢enumerables和管道好多了.

我在使用生成器的python中看到过这个:

def number_generator():
  n = 3
  while True:
    yield n
    n += 2

是否有内置函数在Elixir中生成这样的序列,或者是一个简单的DIY替代品?这种模式在Elixir中有名字吗?



1> Patrick Osci..:

您至少有两个选项可以在Elixir中生成流.最通用的是Stream.unfold

Stream.unfold(3, fn(x) -> {x, x + 2} end)

# or

Stream.unfold(3, &({&1, &1 + 2}))

但在你的情况下,你可以使用更简单的 Stream.iterate

Stream.iterate(3, fn(x) -> x + 2 end)

# or

Stream.iterate(3, &(&1 + 2))

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有