Scala占位符语法
有件事我不太明白,希望有人能解释一下。。 我有Seq[字符串]Scala占位符语法,scala,Scala,有件事我不太明白,希望有人能解释一下。。 我有Seq[字符串] val strDeps: Seq[String] = ... 我尝试使用sortWith方法对其进行反向排序,得到以下错误 scala> print(strDeps.sortWith(_.reverse.compareTo(_.reverse) < 0) mkString ("\n")) <console>:15: error: wrong number of parameters; expected =
val strDeps: Seq[String] = ...
我尝试使用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"))
^
scala>print(strDeps.sortWith(u.reverse.compareTo(u.reverse)<0)mkString(“\n”))
:15:错误:参数数量错误;期望值=2
打印(strDeps.sortWith(u.reverse.compareTo(u.reverse)<0)mkString(“\n”))
^
但是,当我尝试在不做反向操作的情况下对其进行排序时,效果很好
scala> print(strDeps.sortWith(_.compareTo(_) < 0) mkString ("\n"))
// this is fine
scala>print(strDeps.sortWith(u.compareTo(u)<0)mkString(“\n”))
//这很好
如果没有占位符语法,它也可以正常工作
scala> print(strDeps.sortWith((a,b) => a.reverse.compareTo(b.reverse) < 0) mkString ("\n"))
// this works fine too
scala>print(strDeps.sortWith((a,b)=>a.reverse.compareTo(b.reverse)<0)mkString(“\n”))
//这也行
\u
仅扩展到尽可能小的范围
内部\uuu.reverse
部分已被解释为x=>x.reverse
,因此sortWith
中缺少参数
compareTo(_)
是一种部分应用的方法。它只是表示“compareTo,但不应用第一个参数”。请注意,不是一个参数。相反,它表示缺少参数
compareTo(_.reverse)
是一种以匿名函数为参数的方法,参数为\uuu.reverse
。转换为x=>x.reverse
另请参见:。同样的问题。