You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中正确指定内联隐式Ordering的方法

正确实现方式

你的写法无效是因为Scala中集合的sorted方法的隐式参数,不能通过调用时定义带默认值的隐式参数这种方式传递。以下是几种可行的正确写法:

方式一:显式传递Ordering实例

直接把排序规则作为显式参数传给sorted,这是最直接的写法:

es.sorted(Ordering.by(_.name))

方式二:局部作用域定义隐式Ordering

如果希望当前代码块内Employee的排序规则自动生效,可以先定义隐式值,再调用sorted:

implicit val employeeNameOrdering: Ordering[Employee] = Ordering.by(_.name)
es.sorted // 编译器会自动匹配上面的隐式Ordering

方式三:自定义方法时绑定默认隐式规则

如果是在自定义方法中需要支持这种灵活排序,可以结合上下文绑定和默认隐式参数,这种写法仅适用于方法定义场景:

def sortEmployees(es: List[Employee])(implicit ord: Ordering[Employee] = Ordering.by(_.name)): List[Employee] = {
  es.sorted
}

// 调用时可省略参数,使用默认的按name排序
sortEmployees(es)
// 也可以显式传入其他排序规则
sortEmployees(es)(Ordering.by(_.id))

内容的提问来源于stack exchange,提问作者Sergey Bushmanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:39:36