Scala中implicit参数写法疑惑?

implicit def list2ordered[A](x: List[A])(implicit elem2ordered: A => Ordered[A]): Ordered[List[A]] =
    new Ordered[List[A]] { 
        //replace with a more useful implementation 
        def compare(that: List[A]): Int = 1
    }

上面代码块里 (implicit elem2ordered: A => Ordered[A]) 这里的隐式为何是这样的写法呢?是由什么简化过来的吗?看过其他写法比如

def sum[A](xs: List[A])(implicit m: Monoid[A]): A = ???

这里的我理解 m 可以从上下文中去寻找 Monoid 这个对象来使用。那么上面的 elem2ordered 是不是就是 m 这里的简写,只不过把创建过程直接写在了参数后面不用另写函数了?

阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进