你好老乡斯卡拉程序员斯卡拉习惯模式匹配与java.lang.String中和案例类
我一直在斯卡拉工作现在有些一个月,但是我有一些适当的基本的东西出了问题,我希望你将帮助我摆脱困境。
case class PersonClass(name: String, age: Int)
object CaseTester {
def main(args:Array[String])
{
val string = "hej"
string match {
case e:String => println(string)
case PersonClass => println(string)
}
}
}
当我做这样我得到错误:
pattern type is incompatible with expected type;
found : object PersonClass
required: java.lang.String
case PersonClass => println(string)
如果我再更改模式匹配下面第二行:
case e:PersonClass => println(string)
然后我得到错误:
error: scrutinee is incompatible with pattern type;
found : PersonClass
required: java.lang.String
case e:PersonClass => println(string)
但是,如果我将字符串定义更改为以下两种情况下编译罚款。
val string:AnyRef = "hej"
原来我遇到的问题,同时试图做的也应该能够成为一个提取的情况下类,但是当我想它不作出了很大的意义:) – Stefan 2010-04-16 14:30:06
不能匹配类像那样。 'PersonClass =>'仅当PersonClass是一个对象时才起作用。要匹配类,你要么分配给一个局部变量:'case e:String =>'或者解包它是一个元组还是case类:'(3,4)match {case(a,b)=>' – Ryan 2013-12-27 18:14:05