在枚举中累积列表.每一个循环



我有一个方法,它接收字符串列表,并生成单词列表的列表。

def some(words) do
  result = []
  Enum.each(words, fn word ->
    result = result ++ [["something", word], ["something else", word]]
  end
  result
end

这个方法不像预期的那样工作,因为它总是返回一个空列表。

我认为,这是因为变量阴影。

这段代码应该重写什么才能正常工作?

elixir中的变量是不可变的,所以你不能在循环中更改列表。有时它可能"看起来像"变量是可变的,因为你可以重新分配它们,但这只会在相同的作用域中可见。

要得到想要的结果,可以使用Enum。Flat_map/2如下。

def some(words) do
  Enum.flat_map words, fn word ->
    [["something", word], ["something else", word]]
  end
end

最新更新