你好老鄉斯卡拉程序員斯卡拉習慣模式匹配與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