scala:Ordering.by 与 Ordering.on

scala: Ordering.by vs Ordering.on

提问人:18446744073709551615 提问时间:10/13/2022 最后编辑:Dmytro Mitin18446744073709551615 更新时间:10/13/2022 访问量:72

问:

和 在 Scala 中有什么区别?Ordering.by()Ordering.on()

(嗯,一个在 trait 中定义,另一个在伴随对象中定义,实现代码也不同,但语言需要两者肯定是有原因的。

Scala 标准库

评论

2赞 Luis Miguel Mejía Suárez 10/13/2022
好吧,正如你所说,因为一个在对象中,所以是一个工厂,另一个在特征中,因此是一个组合器。它们都可以帮助您从现有实例中创建更新的实例。Ordering

答:

3赞 Gaël J 10/13/2022 #1

Ordering.by 的文档中:

此函数类似于隐式传递参数的位置。Ordering.onOrdering[S]

基本上两者是一样的,这只是一个方便的问题,这取决于你的上下文和你正在使用的内容。

评论

0赞 18446744073709551615 10/13/2022
你能举例说明吗?在什么情况下,什么更方便?
1赞 Luis Miguel Mejía Suárez 10/13/2022
@18446744073709551615如果您想凭空创建一个新的排序,那么类似的东西非常方便,而不是掺杂 - 但是,在其他一些上下文中,调用现有实例可能更方便。Ordering.by((foo: Foo) => ...)Ordering[Bar].on(foo => ...)on