Scala 交叉编译文字类型
Scala cross compiling literal types
有没有办法将文字类型交叉编译到 Scala 2.12?
假设
def foo[S <: String](implicit V: ValueOf[S]): String = V.value
println(foo["bar"])
Shapeless 可以使用 shapeless.Witness
对文字类型进行编码,因此应该可以填充 ValueOf
,或者提供另一种 class 具有 Scala 版本特定实现的类型。但是我对如何处理表达式 foo["bar"]
.
有点迷茫
foo["bar"]
在 2.12 中无法解析。
你应该使用foo[Witness.`"bar"`.T]
def foo[S <: String](implicit V: Witness.Aux[S]): String = V.value
println(foo[Witness.`"bar"`.T]) //bar
有没有办法将文字类型交叉编译到 Scala 2.12?
假设
def foo[S <: String](implicit V: ValueOf[S]): String = V.value
println(foo["bar"])
Shapeless 可以使用 shapeless.Witness
对文字类型进行编码,因此应该可以填充 ValueOf
,或者提供另一种 class 具有 Scala 版本特定实现的类型。但是我对如何处理表达式 foo["bar"]
.
foo["bar"]
在 2.12 中无法解析。
你应该使用foo[Witness.`"bar"`.T]
def foo[S <: String](implicit V: Witness.Aux[S]): String = V.value
println(foo[Witness.`"bar"`.T]) //bar