我前幾天在做一個類來處理一些算術運算(是的,我知道數字出現在2.8中),並且發現自己想知道如何簡化以下:Scala:在兩個相同類型之間輸入方差和模式匹配
def Foo[A](_1:A, _2:A) = (_1, _2) match{
case _1:Bar, _2:Bar => _1 + _2
case _1:Baff, _2:Baff => _1 push _2
case _, _ => None
}
,這樣我可以做到這
def Foo[A](_1:A, _2:A) = _1 match{
case _1:Bar => _1 + _2
case _1:Baff => _1 push _2
case _ => None
}
當然,我知道,在聲明函數它已經宣佈_2
S型的類型可以想見,從_1
繼承'的方式, 「A」可能是共享的tr ait等等。我知道這意味着編譯器需要抗議以保護代碼。有沒有辦法說「我希望_1和_2是同一個extact類」,這樣我就不必做出雙重_1:Int, _2:int
聲明瞭?
我回家試了一下,它不起作用。它甚至沒有編譯。如果超過了重載方法,它會在「+」處失敗。這個東西會在2.8中編譯? – wheaties 2010-04-23 00:04:19
我在2.7.7上試過了,但它應該在2.8上工作。你遇到了什麼錯誤? – 2010-04-23 00:18:28