如何为列表的中间模式分配名称?



这段代码不编译,我做错了什么? 可以做到吗? 我如何模式匹配至少具有 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 =>
}

会做这项工作。

最新更新