在表达中强调

时间:2012-11-19 14:04:29

标签: scala wildcard scalaz scalaz7

下面的下划线意味着什么?这是scalaz7库的片段:

trait Apply[F[_]] extends Functor[F] { self =>
  //...
  def ap[A, B](fa: => F[A])(f: => F[A => B]): F[B]
  //...
  def apF[A, B](f: => F[A => B]): F[A] => F[B] = ap(_)(f)   // <----HERE
  //...
}

使用它的一般规则是什么?

1 个答案:

答案 0 :(得分:5)

在Scala中,下划线通常是通配符。具体来说,它是参数名称的简写。因此lambda表达式ap(_)(f)等同于x => ap(x)(f)

如果每个参数只使用一次,则可以使用_作为匿名函数参数的简写,并按照声明的顺序使用它们。