说我有一个函数带一个参数斯卡拉职能转变
def fun(x: Int) = x
基于这一点,我想生成具有相同的调用约定一个新的功能,但会采用一些变换,它的参数在委托给原始函数之前。对于这一点,我可以
def wrap_fun(f: (Int) => Int) = (x: Int) => f(x * 2)
wrap_fun(fun)(2) // 4
一个怎么可能去这样做同样的事情,除了任何元数,只有拥有的参数的部分改造适用于普通的功能是什么?
def fun1(x: Int, y: Int) = x
def fun2(x: Int, foo: Map[Int,Str], bar: Seq[Seq[Int]]) = x
wrap_fun(fun1)(2, 4) // 4
wrap_fun(fun2)(2, Map(), Seq()) // 4
如何使wrap_fun
定义使上述调用工作看起来像?
Fwiw,这些东西在动态语言中可以非常简单:http://ideone.com/MYP2W。 – missingfaktor 2012-04-30 18:27:02