【问题标题】:How to use literal type in Scala 2.13如何在 Scala 2.13 中使用文字类型
【发布时间】:2019-06-15 03:30:03
【问题描述】:

我正在尝试 Scala 2.13 的文字类型,但遇到以下错误:

scala> def double[A <: Singleton] = valueOf[A]
                                           ^
       error: No singleton value available for A.

你能解释一下为什么吗?

【问题讨论】:

    标签: scala scala-2.13


    【解决方案1】:

    我不认为那样工作,而是使用相关的类型类ValueOf:

    object Foo
    
    def foo[A : ValueOf] = valueOf[A]
    
    scala> foo[Foo.type]
    
    res2: Foo.type = Foo$@1c105c3a
    

    【讨论】:

    • 谢谢。我现在可以做很酷的事情了: scala> def add[A<: int : valueof b scala> add[1, 2] res79: Int = 3
    • 所以我们可以实现依赖类型?
    • @PavelFilatov 您可能想查看单例操作库以了解更多这方面的信息。
    【解决方案2】:

    我不完全确定您在尝试什么,但这里有一个来自 doc 的示例:

    def foo[T](implicit v: ValueOf[T]): T = v.value
    

    添加了scala.ValueOf[T] 类型类和相应的scala.Predef.valueOf[T] 运算符,从而产生具有单个居民的类型的唯一值

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 2022-01-10
      • 1970-01-01
      • 2021-06-24
      • 2021-08-26
      • 2021-06-09
      • 2021-09-29
      • 1970-01-01
      • 2019-12-21
      相关资源
      最近更新 更多