Scala之旅-高阶函数

Scala之旅-高阶函数

高阶函数

Scala允许定义高阶函数。高阶函数就是以函数作为参数或者结果是一个函数的函数。下面是一个以函数f和值v为参数,并将f应用到v的函数:

def apply(f: Int => String, v: Int) = f(v)

注意:如果上下文环境需要,方法会被自动转换为函数。

下面是另一个例子:

class Decorator(left: String, right: String) {
  def layout[A](x: A) = left + x.toString() + right
}
object FunTest extends App {
  def apply(f: Int => String, v: Int) = f(v)
  val decorator = new Decorator("[", "]")
  println(apply(decorator.layout, 7))
}

执行结果如下:

[7]

在这个例子中,方法decorator.layout通过作为方法调用中的参数,被自动转换为类型为Int => String的值。请注意方法decorator.layout是一个多态方法(也就是说它的签名类型中有一些是抽象而没有明确定义的),并且Scala编译器需要首先实例化它的方法类型。

参考资料

本文译自Tour Of Scala – Higher-order Functions

上一篇:Scala之旅-使用mixins合成类

下一篇:Scala之旅-嵌套方法

发表评论

电子邮件地址不会被公开。 必填项已用*标注