Scala sortBy使用_ placeholder参数不起作用

时间:2018-09-18 07:19:39

标签: scala

在Scala中,List(3,2,1,5,2,4).sortBy(x => x)有效,

但是如果您用List(3,2,1,5,2,4).sortBy(_)替换,它将无法正常工作。

我了解_是占位符参数。为什么在这种情况下不起作用?

谢谢

2 个答案:

答案 0 :(得分:2)

sortBy()以函数作为参数。 x => x是一个函数,但仅仅是_,在这种情况下被解释为将sortBy从方法转换为函数。

在一般情况下,如果您不喜欢编写x => x,则可以使用identity函数(例如,可以编写.sortBy(identity))。

但是,对于sortBy()来说,只写List(3,2,1,5,2,4).sorted来达到相同的效果会更好。

答案 1 :(得分:1)

单个下划线本身不解释为占位符。在这种情况下,它会被解释为将sortBy从方法转换为函数。如果您想要x => x的替代方法,请使用identity:它可能不会更短,但可读性更高。正如C4stor指出的那样,List(3,2,1,5,2,4).sorted在这种情况下也适用。