我正在阅读一些较旧的 Scala 帖子以更好地理解类型类,然后我跑了 跨this one这似乎很有用,但这个例子似乎已经过时了。
有人可以帮我找出正确的方法来实现 Phillipe 的意图吗?这是代码
trait Default[T] { def value : T }
implicit object DefaultInt extends Default[Int] {
def value = 42
}
implicit def listsHaveDefault[T : Default] = new Default[List[T]] {
def value = implicitly[Default[T]].value :: Nil
}
default[List[List[Int]]]
当复制/粘贴并在 REPL 中运行时,我得到这个>
scala> default[List[List[Int]]]
<console>:18: error: not found: value default
default[List[List[Int]]]
^
最佳答案
这与 Scala 版本无关。如果你阅读 @Philippe's answer ,您会注意到 default
方法根本没有在任何地方定义。这不适用于任何 Scala 版本。
它应该看起来像这样:
def default[T: Default] = implicitly[Default[T]].value
关于scala - 将属性添加到类型而不是类型实例的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910923/