我如何实现一个无限序列生成器,我可以使用 Stream
操作它库函数?
我想用它来生成前 n 个素数。我有一个有效的递归方法,但我更喜欢枚举和管道。
我已经看到使用生成器在 python 中完成的:
def number_generator():
n = 3
while True:
yield n
n += 2
在 Elixir 中是否有内置函数来生成此类序列,或者有一个简单的 DIY 替代方案?这个模式在 Elixir 中有名字吗?
最佳答案
您至少有两个选项可以在 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))
关于elixir - 在 Elixir 中生成无限序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41727028/