目前我正在学习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")
}
答案 0 :(得分:4)
您正在使用boolean extractor,该pattern binder符合v
产生x.unapply(v)
的所有值true
。 @
是Query Builder,它将变量status
绑定到模式匹配的值。
在您的示例中,模式匹配字符串“RAK”,该字符串绑定到变量status
。