1.列表提取器
列表可以通过多种功能强大的模式匹配来解构。首先是要构建清单。
val countingList = List(1,2,3,42)
使用类似于案例类构造函数的模式从此列表中提取任何元素:
val mustHaveThree = countingList match { case List(_, _, 3, somethingElse) => s“ 有一个包含3作为第三个元素的列表,之后我发现$ somethingElse”}
此模式将一个列表与四个元素完全匹配,其中我们不关心前两个元素。第三个必须恰好是3就行了,第四个可以是任何东西,之所以将其命名为somethingElse,是因为可以在s插值字符串中重用它。
2. Haskell-Like前置
如果认为清单与以前相同,则可以按照下面的提取清单的开头和结尾:
val startsWithOne = countingList match { case 1 :: someOtherElements => “此列表以一个开头,其余为$ someOtherElements”}
不要问这怎么可能。即将就是主题了。前置模式在处理列表的代码中非常有用,别忘记啦,但是当事先不知道列表是否为空时,可以这样写:
def processList(num