1

在 Scala 语言中,类的隐式作用域在运行时被删除,例如,如果定义:

case class A(i: Int)

object A {

  implicit def toInt(a: A) = a.i
}

然后对于一个数组:

val arr = Array[Any](A(1), 2)

不可能写:

arr.map(_ + 3)

作为类型 A 并且其隐式范围在插入到 Array[Any] 后被删除。

这使得某些设计模式(例如类型类查找)无法在运行时应用(当类型信息仍然部分可用时)。就我而言,我想编写上面的程序而不在类型匹配中明确说明 A(因为在实际情况下,像 A 这样的类的数量可能是无数的)。是否有任何 scala 元编程包(首选 scalameta)能够在一个项目中执行此操作?我应该怎么做才能告诉 Java 运行时字节码“寻找运行时类的隐式,如果没有找到做其他事情”?

4

0 回答 0