Scala模式活页夹(@)
示例
所述@符号模式匹配期间结合到名称的变量。绑定变量可以是整个匹配对象或匹配对象的一部分:
sealed trait Shape
case class Rectangle(height: Int, width: Int) extends Shape
case class Circle(radius: Int) extends Shape
case object Point extends Shape
(Circle(5): Shape) match {
case Rectangle(h, w) => s"rectangle, $h x $w."
case Circle(r) if r > 9 => s"large circle"
case c @ Circle(_) => s"small circle: ${c.radius}" //整个匹配对象绑定到c
case Point => "point"
}>res0:String=smallcircle:5
绑定标识符可以在条件过滤器中使用。从而:
case Circle(r) if r > 9 => s"large circle"
可以写成:
case c @ Circle(_) ifc.radius> 9 => s"large circle"
该名称只能绑定到匹配模式的一部分:
Seq(Some(1), Some(2), None) match {
//仅匹配序列的第一个元素绑定到名称“c”
case Seq(c @ Some(1), _*) => head
case _ => None
}>res0:Option[Int]=Some(1)
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法