这个问题的原因是,AnyVal和Opaque类型不支持相应的元编程构造。解决方法是使用Typelevel Scala和其它宏来解决这个问题。
以下是一个例子:
import scala.deriving._
opaque type MyInt = Int
object MyInt {
inline def apply(i: Int): MyInt = i.asInstanceOf[MyInt]
inline def unapply(i: MyInt): Option[Int] = Some(i.asInstanceOf[Int])
}
object Main {
def main(args: Array[String]): Unit = {
val m = summon[Mirror.Of[MyInt]]
println(m)
}
}
这样,MyInt对象就可以成功地派生Mirror类型了。
上一篇:按阈值数字分组行