有些东西我不太明白希望有人可以解释一下..我有Seq [String]
val strDeps: Seq[String] = ...
Run Code Online (Sandbox Code Playgroud)
我尝试在使用sortWith方法的反向排序它,我得到以下错误.
scala> print(strDeps.sortWith(_.reverse.compareTo(_.reverse) < 0) mkString ("\n"))
<console>:15: error: wrong number of parameters; expected = 2
print(strDeps.sortWith(_.reverse.compareTo(_.reverse) < 0) mkString ("\n"))
^
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试排序而不做反向时它工作正常.
scala> print(strDeps.sortWith(_.compareTo(_) < 0) mkString ("\n"))
// this is fine
Run Code Online (Sandbox Code Playgroud)
它没有占位符语法也可以正常工作
scala> print(strDeps.sortWith((a,b) => a.reverse.compareTo(b.reverse) < 0) mkString ("\n"))
// this works fine too
Run Code Online (Sandbox Code Playgroud)
compareTo(_)
Run Code Online (Sandbox Code Playgroud)
是部分应用的方法.它只是意味着"compareTo,但不应用第一个参数".请注意,_是不是一个参数.相反,它表明没有参数.
compareTo(_.reverse)
Run Code Online (Sandbox Code Playgroud)
是一个以匿名函数为参数的方法,参数为_.reverse.这转化为x => x.reverse.