說我有一個函數帶一個參數斯卡拉職能轉變
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