当前位置:  开发笔记 > 编程语言 > 正文

在Scala中,所有抽象类型在擦除后都具有相同的类型

如何解决《在Scala中,所有抽象类型在擦除后都具有相同的类型》经验,为你挑选了1个好方法。

以下代码无法编译,因为两个乘法运算符在擦除后具有相同的类型:(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
  }
}

sjrd.. 6

DummyImplicit是为了什么:

trait AbstractTypes {
  type ScalarT
  type VectorT
  abstract class Operators(u: VectorT) {
    def *(f: ScalarT): VectorT
    def *(v: VectorT)(implicit dummy1: DummyImplicit): VectorT
  }
}

DummyImplicit如果需要更多重载,其擦除相同,则可以包含任意数量的s.



1> sjrd..:

DummyImplicit是为了什么:

trait AbstractTypes {
  type ScalarT
  type VectorT
  abstract class Operators(u: VectorT) {
    def *(f: ScalarT): VectorT
    def *(v: VectorT)(implicit dummy1: DummyImplicit): VectorT
  }
}

DummyImplicit如果需要更多重载,其擦除相同,则可以包含任意数量的s.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有