这段代码不编译,我做错了什么? 可以做到吗? 我如何模式匹配至少具有 2 个元素的列表,并使模式具有尾部变量(表示y :: _
)
我知道可以用简单的if
对::
脱糖。但是没有脱糖,也没有如果...有可能?
val list:List[Int] = ...
list match {
case x :: tail@(y:: _) =>
}
试试这段代码是否适合你:
list match {
case x :: (tail@(y :: _)) =>
}
使用另一个变量来保存第二个元素:
list match {
case x :: y :: _ =>
}
这将仅匹配至少具有两个元素的列表,将x
绑定到第一个元素,y
绑定到第二个元素并忽略其余元素。
如果您只需要确保列表的其余部分至少有 1 个长,那么
list match {
case x :: y if y.size > 0 =>
}
会做这项工作。