所以我正在编写一个简单的方法,总结列表中前3个或更少的整数 但我对比赛模式感到困惑 我目前有
let sums l = match l with
| [] -> 0
| (h1::h2::h3::_) -> h1+h2+h3
| [h1;h2;h3] -> h1+h2+h3
| [h1;h2] -> h1+h2
| [h1] -> h1
这涵盖了所有情况吗? 为什么我不能写出像[h1; h2; h3; _]这样的3个或更多元素呢? 对不起,如果这些问题看起来太简单了,我就开始学习OCaml,我无法在网上找到这样的东西。
答案 0 :(得分:2)
这涵盖了所有情况吗?
是的,它们涵盖了所有案例,但我会写:
data/feeds
由于let sums l = match l with
| [] -> 0
| [h1] -> h1
| [h1; h2] -> h1+h2
| h1 :: h2 :: h3 :: _ -> h1+h2+h3
与[h1; h2; h3]
匹配,h1 :: h2 :: h3 :: _
是多余的(通配符为[]
)
对于3个或更多元素我怎么写不能写[h1; h2; h3; _]?
嗯,你就是不能。此语法无效。
编辑:抱歉,我发疯了。此语法有效,但它匹配四个元素的列表而不绑定最后一个元素,这不是您想要的。