我有一个方法,它接收字符串列表,并生成单词列表的列表。
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