让'我说我有一个函数move
。
现在,根据一些输入(让我们说输入说"移动3"),我必须移动3次。
我会这样做:
move compose move compose move
是否可以动态执行功能组合?这样我就可以根据我必须移动的次数来构建我的新函数。
谢谢
答案 0 :(得分:11)
您可以使用Function.chain
方法:
scala> val move1 = (x:Int) => x+1
move1: Int => Int = <function1>
scala> val move5 = Function.chain(List.fill(5)(move1))
move5: Int => Int = <function1>
scala> move5(5)
res1: Int = 10
答案 1 :(得分:4)
只需使用折叠:
def move(x: Int): Int = x + 1
def moveBy(n: Int) =
(1 to n).foldLeft[Int => Int](identity _) { (f, _) => f compose move }
moveBy(5)(0) // > 5