10
我希望它可以給我一個類型的錯誤,因爲(String, String)
在else
情況並不Pair
。爲什麼這不會導致類型錯誤?
case class Pair(x: String, y: String)
val value = Console.readLine.toBoolean
val Pair(x, y) =
if (value) Pair("foo", "bar")
else false
相反,如果我輸入假的,我會在運行時出現以下錯誤。
scala.MatchError: (foo,bar) (of class scala.Tuple2)
我想解構是分配的結果Any
類型的變量,然後就可以匹配只是糖,但似乎不幸的是,斯卡拉讓這隻蒼蠅。
我需要記住這個命令('scalac')! – schmmd 2012-03-16 19:59:44
這是很好的知道,但我不認爲Product'的'常見的超類型就是爲什麼它編譯。我改變了我的例子來證明這一點,儘管它們都有一個共同的超類型的'Any'! – schmmd 2012-03-16 20:04:57