1

有没有办法将文字类型交叉编译到 Scala 2.12?

比方说

def foo[S <: String](implicit V: ValueOf[S]): String = V.value

println(foo["bar"])

Shapeless 可以使用 对文字类型进行编码shapeless.Witness,因此应该可以使用 shimValueOf或提供另一个具有 Scala 版本特定实现的类型类。但是我对如何处理表达式有点迷茫foo["bar"]

4

1 回答 1

2

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

获取“单例类型”的类型

于 2020-06-28T16:40:08.117 回答