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之旅-嵌套方法