假设我想从其类型
3
中召唤一个常数3。
在 Scala 2 中,这可以通过无形见证轻松完成:
val w = implicitly[Witness[3]]
w.value
这在 Scala 3 中没有对应的,我尝试了以下方法:
val v2 = summon[3]
val v3 = inline constValue[3]
而且它们似乎都不起作用。实现这个的规范方法是什么?怎样才能让它在 Scala 3 和 2.13 之间交叉编译?
在 Scala 3 中使用
import scala.compiletime.constValue
constValue[3]
https://scastie.scala-lang.org/DmytroMitin/puPRyLUgQmaVfXslE7Di7Q
或者好的旧类型课程
scala.ValueOf
valueOf[3] // from scala.Predef
https://scastie.scala-lang.org/DmytroMitin/puPRyLUgQmaVfXslE7Di7Q/1