【发布时间】:2017-01-24 14:31:09
【问题描述】:
我正在学习 Elixir,发现自己不得不将多个列表连接在一起,其中有一个开头、中间和结尾。简化示例:
a = [1,2]
b = [3,4]
c = [5,6]
a ++ b ++ c
> [1, 2, 3, 4, 5, 6]
我在直播中这样做了数千次,并希望对此有所了解。
第 1 部分)
我写了一个函数来处理这个,可能有一些东西可以为我做这个,但我没有看到它。我应该为此使用内置的 Elixir 功能吗?
def append(front, back) when is_list(front) when is_list(back) do
front
|> Enum.reverse
|> Enum.reduce(back, &([&1 | &2]))
end
或者我应该刚刚这样做,随着时间的推移它对我来说会变得更自然?
[1, 2]
|> Enum.reverse
|> Enum.reduce([3, 4], &([&1 | &2]))
|> Enum.reverse
|> Enum.reduce([5, 6], &([&1 | &2]))
第 2 部分)
我把这些部分放在一起的顺序重要吗?
Way 1:
[1, 2]
|> append([3, 4])
|> append([5, 6])
...
Way 2:
end = append([3, 4], [5, 6])
append([1, 2], end)
中间列表是否会在两种情况下重复使用,因为两者都附加了标头指针?
对此的任何帮助都会很棒,干杯。
【问题讨论】:
标签: elixir