Béb*_*bul 2 scala type-erasure
以下代码无法编译,因为两个乘法运算符在擦除后具有相同的类型:(f: Object)Object
我知道类型擦除,但我见过的所有情况都擦除了泛型类型,如List[Int]或者List[String],在Scala双重定义中回答(2种方法具有相同类型的擦除).
如何让Scala对待不同类型的XxxT`类型不同?
trait AbstractTypes {
type ScalarT
type VectorT
abstract class Operators(u: VectorT) {
def *(f: ScalarT): VectorT
def *(v: VectorT): VectorT
}
}
Run Code Online (Sandbox Code Playgroud)
这DummyImplicit是为了什么:
trait AbstractTypes {
type ScalarT
type VectorT
abstract class Operators(u: VectorT) {
def *(f: ScalarT): VectorT
def *(v: VectorT)(implicit dummy1: DummyImplicit): VectorT
}
}
Run Code Online (Sandbox Code Playgroud)
DummyImplicit如果需要更多重载,其擦除相同,则可以包含任意数量的s.
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |