Chr*_*ord 2 scala implicit typeclass
我正在阅读一些较旧的Scala帖子以更好地理解类型类,我遇到了一个似乎非常有用的,但这个例子似乎已经过时了.
有人可以帮我找出正确的方法来做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]]]
Run Code Online (Sandbox Code Playgroud)
复制/粘贴并在REPL中运行时,我得到这个>
scala> default[List[List[Int]]]
<console>:18: error: not found: value default
default[List[List[Int]]]
^
Run Code Online (Sandbox Code Playgroud)
这与Scala版本无关.如果您阅读@ Philippe的答案,您会注意到该default方法并未在任何地方定义.这在任何 Scala版本中都不起作用.
它应该看起来像这样:
def default[T: Default] = implicitly[Default[T]].value
Run Code Online (Sandbox Code Playgroud)