Fil*_*uca 4 language-features scala
有谁能告诉我Scala中func _和func(_)之间的区别?我不得不重写这个方法:
def validations: List[ValueType => List[FieldError]] = Nil
Run Code Online (Sandbox Code Playgroud)
如果我用以下方式覆盖它:
val email = new EmailField(this, 255){
override def validations = valUnique _ :: Nil
private def valUnique(email: String): List[FieldError] = {
Nil
}
}
Run Code Online (Sandbox Code Playgroud)
没关系,如果我用以下方式覆盖它:
val email = new EmailField(this, 255){
override def validations = valUnique(_) :: Nil
private def valUnique(email: String): List[FieldError] = {
Nil
}
}
Run Code Online (Sandbox Code Playgroud)
不行.任何人都可以解释原因吗?非常感谢你.
如果是:
valUnique _
Run Code Online (Sandbox Code Playgroud)
您正在部分应用该valUnique方法,使其作为函数加框.
另一方面:
valUnique(_)
Run Code Online (Sandbox Code Playgroud)
指定对valUnique方法的调用的占位符,通常这样做是为了将匿名函数传递给其他高阶函数,如:
emails flatMap { valUnique(_) }
Run Code Online (Sandbox Code Playgroud)
在您的情况下,虽然部分应用程序仍然完全有效,但在范围内没有任何内容可用于实现此类占位符.
请注意,在将方法作为参数传递之前,您还可以将方法提升为函数:
emails flatMap { valUnique _ }
Run Code Online (Sandbox Code Playgroud)
这种相似性几乎可以肯定你的困惑的原因,尽管这两种形式都没有做相当幕后同样的事情.
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |