You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Elixir中循环调用带两个参数的函数?附Java示例

在Elixir中实现循环调用函数并收集结果

当然可以,不过Elixir作为函数式语言,不会用Java那种命令式的for循环写法,而是借助枚举模块的函数来实现相同逻辑。

你的Java代码是循环i从1到9,每次调用doSomething(other_list, i)并将返回的列表合并到myList里,对应到Elixir可以这么写:

方法一:用Enum.flat_map/2

flat_map会遍历范围内的每个i,调用目标函数后自动把所有返回的列表展开合并成一个大列表,正好对应Java里的addAll逻辑:

my_list = 1..9 |> Enum.flat_map(fn i -> do_something(other_list, i) end)

方法二:用for推导式

如果习惯类似循环的写法,Elixir的for推导式也能实现:

# 先生成包含多个子列表的列表,再展开成一个列表
my_list = for i <- 1..9, do: do_something(other_list, i) |> List.flatten()

# 或者直接用into参数,自动将子列表合并到空列表中
my_list = for i <- 1..9, into: [], do: do_something(other_list, i)

注意:这里的do_something需要和Java里的逻辑一致——接收other_list和i两个参数,返回一个列表,这样才能正确合并结果。

内容的提问来源于stack exchange,提问作者anna2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:10:26