【发布时间】:2017-04-11 13:26:30
【问题描述】:
有没有办法进行模式匹配,例如 [_head |中间 | _last] 在长生不老药中?也就是说,我想匹配一个至少包含三件事(但通常更多)的列表,但只匹配除头和最后一个元素之外的所有内容。
例子:
def match_middle([_head | middle | _last]) do
IO.inspect middle
end
match_middle [1, 2, 3, 4, 5]
>>> [2, 3, 4]
【问题讨论】:
-
大概没有办法
-
您确定要进行模式匹配,而不仅仅是提取没有第一个和最后一个元素的列表吗?
-
@GavinBrelstaff 我特别想知道模式匹配,但如果你有一个简洁的方法,我想看看。我目前正在使用想到的第一件事。我看不到在 cmets 中格式化代码的方法......这里用分号来指导。 [_ |休息] = 物品; [_最后| rest_backwards] = Enum.reverse 休息; middle = Enum.reverse(rest_backwards)