gpt4 book ai didi

elixir - 如何从 Elixir 中的递归函数返回/产生一个值?

转载 作者:行者123 更新时间:2023-12-02 09:50:43 24 4
gpt4 key购买 nike

这似乎是一件简单的事情,但我似乎在任何地方都找不到足够简单的答案让我理解。

假设我有一个像这样的 Elixir 函数:

   def fetch_card_ids(offset, total_cards) when offset < total_cards do
url = "http://some.domanin?offset=#{offset}"
response = HTTPotion.get url

#return or yield response here

fetch_card_ids(offset+24,total_cards)
end

在 C# 中,我可以在迭代某些东西时产生返回值,这当然与递归不同,但尽管如此:我可以在 elixir 的递归函数中做类似的事情吗?

当然,任何帮助都会非常感激。

最佳答案

如果您想要做的是将响应“流式传输”给调用者,那么 Stream 是一个不错的选择。例如,您可以使用 Stream.unfold/2 :

def fetch_card_ids(offset, total_cards) do
Stream.unfold offset, fn
off when off < total_cards ->
resp = HTTPotion.get(url)
{resp, off + 24}
_ ->
nil
end
end

该流每次获取响应时都会“产生”响应,并在 offset 大于 total_cards 时停止。

关于elixir - 如何从 Elixir 中的递归函数返回/产生一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com