我们可以使用大小写匹配再次模式选项和正常值吗?

时间:2014-09-19 08:55:03

标签: scala

如果该值不是一个选项,我想打印该值,如果它是选项,则打印该选项内的值。怎么做到的?以下不起作用

val a="test"
def b= a match {
case i:Some[_] => i.getOrElse("1")
case _@x=>x
}

2 个答案:

答案 0 :(得分:4)

我想是这样的事情:

val a: Any = "test"
def b[T] = a match {
  case i: Option[T] => i.getOrElse("1")
  case _@x=>x
}

首先a必须是您可以匹配的某种超类型,如果您对选项进行a: String匹配是不可能的,因为您已经知道它是一个字符串,请注意您必须为选项传递一个类型参数。

答案 1 :(得分:3)

val a:Any="test"
def b= a match {
  case Some(i) => i
  case None => "1"
  case x=>x
}