这段代码没有编译,我做错了什么?有可能做到吗?
如何模式匹配具有至少2个元素的列表,并使模式具有尾部变量(意味着y :: _
)
我知道可能会使::
或简单的if
感到害怕。但是没有贬低,没有......如果可能吗?
val list:List[Int] = ...
list match {
case x :: tail@(y:: _) =>
}
答案 0 :(得分:2)
尝试此代码是否适合您:
list match {
case x :: (tail@(y :: _)) =>
}
答案 1 :(得分:0)
您使用另一个变量来保存第二个元素:
list match {
case x :: y :: _ =>
}
这只匹配一个包含至少两个元素的列表,将x
绑定到第一个元素,y
绑定到第二个元素,忽略其余元素。
如果您需要确保列表的其余部分至少为1长,那么
list match {
case x :: y if y.size > 0 =>
}
将完成这项工作。