了解Scala的提取器 - 具有零变量和布尔结果的模式

时间:2016-12-13 07:17:51

标签: scala pattern-matching

目前我正在学习Scala Extractor并陷入困境。我无法理解以下代码。在下面的模式匹配中,如果将unapply方法设计为返回布尔值,UpperCase()如何返回String?

  object UpperCase {
    def unapply(s: String): Boolean = s.toUpperCase == s
  }

  println(UpperCase.unapply("RAK")) //print boolean true or false.

  "RAK" match{
    case status @ UpperCase() => println("yes - "+ status) //How status holds RAK not boolean value?
    case _ => println("No")
  }

1 个答案:

答案 0 :(得分:4)

您正在使用boolean extractor,该pattern binder符合v产生x.unapply(v)的所有值true@Query Builder,它将变量status绑定到模式匹配的值。

在您的示例中,模式匹配字符串“RAK”,该字符串绑定到变量status