在给定列表上,我想设计一个模式匹配用例,它看起来像a::b::c
a
应该被视为单个元素,而b
应该被视为视为n个元素。 c
是一种特定类型。此外,我想继续使用a
,b
和c
因此,有什么方法可以设计像1element::nelement::type
答案 0 :(得分:1)
不能。列表的模式匹配中没有“中间”元素。
以下模式:
| "lorem" :: "ipsum" :: rest -> ...
将匹配分别具有至少 2个匹配元素的字符串列表,
"lorem"
和"ipsum"
,并将rest
绑定到列表的其余部分。
使用:
| "lorem" :: "ipsum" :: [] -> ...
您要匹配一个列表,该列表具有与"lorem"
相匹配的 2个元素(仅)
和"ipsum"
。
如果要在最后一个元素上使用模式匹配,则可以使用
match List.rev list with
| last_element :: _ -> ...
但是您需要有充分的理由这样做,因为有更好/更快的方法 访问最后一个元素的方法。