在scala中编写apply-style函数

时间:2015-10-30 04:26:28

标签: scala functional-programming

在scala中,可以组成函数

def f = { x:Int => x + 420}
f.compose(f)

还有一种为对象定义函数应用程序的方法

object F {
  var y = 420
  def apply (x: Int) = x + y
}
println(F(3))

如何组合这些类似函数的对象?以下不起作用。

println(F.compose(F))

2 个答案:

答案 0 :(得分:2)

实现这一目标的一种可能方法:

F.apply _ compose F.apply _

答案 1 :(得分:2)

  1. 您可以创建匿名函数F(_)并撰写:F(_).compose(F(_))(编辑:请参阅Victor Moroz的评论)。

  2. 您还可以将对象设为功能:object F extends (Int => Int)并撰写F.compose(F)