我前几天在做一个类来处理一些算术运算(是的,我知道数字出现在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