我正在阅读一些较旧的 Scala 帖子,以更好地理解类型类,然后我运行了
穿过this one https://stackoverflow.com/questions/8524878/implicit-conversion-vs-type-class这看起来很有用,但这个例子似乎已经过时了。
有人可以帮我找出正确的方法来实现菲利普的意图吗?这是代码
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的回答 https://stackoverflow.com/a/8526452/2988,你会注意到default
方法根本没有在任何地方定义。那不会工作在any斯卡拉版本。
它应该看起来像这样:
def default[T: Default] = implicitly[Default[T]].value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)