Как использовать буквенный тип в Scala 2.13
Я пытаюсь литеральные типы из Scala 2.13, и я сталкиваюсь со следующей ошибкой:
scala> def double[A <: Singleton] = valueOf[A]
^
error: No singleton value available for A.
Не могли бы вы объяснить, почему?
2 ответа
Решение
Я не думаю, что это работает так, а скорее со связанным классом типов ValueOf
:
object Foo
def foo[A : ValueOf] = valueOf[A]
scala> foo[Foo.type]
res2: Foo.type = Foo$@1c105c3a
Я не совсем уверен, что вы пытаетесь, но вот пример из документа:
def foo[T](implicit v: ValueOf[T]): T = v.value
scala.ValueOf[T]
тип класса и соответствующийscala.Predef.valueOf[T]
добавлен оператор, обеспечивающий уникальную ценность типов с одним жителем