Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解Scala';s提取器-具有零变量和布尔结果的模式_Scala_Pattern Matching - Fatal编程技术网

理解Scala';s提取器-具有零变量和布尔结果的模式

理解Scala';s提取器-具有零变量和布尔结果的模式,scala,pattern-matching,Scala,Pattern Matching,目前我正在学习Scala提取器,并陷入以下困惑。我无法理解以下代码。在下面的模式匹配中,UpperCase()如何返回字符串,而unapply方法被设计为返回布尔值 object UpperCase { def unapply(s: String): Boolean = s.toUpperCase == s } println(UpperCase.unapply("RAK")) //print boolean true or false. "RAK" match{

目前我正在学习Scala提取器,并陷入以下困惑。我无法理解以下代码。在下面的模式匹配中,UpperCase()如何返回字符串,而unapply方法被设计为返回布尔值

  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")
  }
您使用的是一个,它匹配所有值
v
,对于该值
x.unapply(v)
将生成
true
@
是一个变量,它将变量
状态
绑定到模式匹配的值


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

,这意味着,“status”实际上持有模式匹配的值;哪一个是“RAK”。谢谢你的简单解释。