假设我有两个列表:
First = [1,2,3,4].
Second = [1,2,3,4,234242].
我知道第二个列表的所有元素都与第一个列表的元素匹配,最后一个额外元素除外。如何使用模式匹配来获取最后一个?
假设我有两个列表:
First = [1,2,3,4].
Second = [1,2,3,4,234242].
我知道第二个列表的所有元素都与第一个列表的元素匹配,最后一个额外元素除外。如何使用模式匹配来获取最后一个?
您可以编写一个函数,只要元素相等,就递归两个列表,然后在第一个列表为空时返回第二个列表的最后一个元素:
find_tail([Head | Tail1], [Head | Tail2]) ->
find_tail(Tail1, Tail2);
find_tail([], [Last]) ->
Last.
仅当第一个列表是文字常量时,您才可以使用普通模式匹配来做到这一点:
1> [1,2,3,4] ++ [Last] = [1,2,3,4,234242].
[1,2,3,4,234242]
2> Last.
234242
但如果它是一个变量,你就不能这样做:
3> X = [1,2,3,4].
[1,2,3,4]
4> X ++ [Last] = [1,2,3,4,234242].
* 1: illegal pattern