在Scala中,List(3,2,1,5,2,4).sortBy(x => x)有效,
但是如果您用List(3,2,1,5,2,4).sortBy(_)替换,它将无法正常工作。
我了解_是占位符参数。为什么在这种情况下不起作用?
谢谢
答案 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
在这种情况下也适用。