如何为List的中间模式指定名称?

时间:2017-11-24 13:19:12

标签: scala pattern-matching

这段代码没有编译,我做错了什么?有可能做到吗? 如何模式匹配具有至少2个元素的列表,并使模式具有尾部变量(意味着y :: _

我知道可能会使::或简单的if感到害怕。但是没有贬低,没有......如果可能吗?

val list:List[Int] = ...
list match {
  case x :: tail@(y:: _) => 
}

2 个答案:

答案 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 =>
}

将完成这项工作。