【发布时间】:2011-03-16 17:16:57
【问题描述】:
在 scala 中有没有办法从已经部分应用的函数中取回参数?
这是否有意义、应该这样做或适合任何用例?
示例:
def doStuff(lower:Int,upper:Int,b:String)=
for(turn <- lower to upper) println(turn +": "+b)
想象一下,有一次我知道“lower”参数,并获得了将其应用于“doStuff”的函数
val lowerDoStuff = doStuff(3,_:Int,_:String)
有没有办法让我把那 3 拿回来? (举例来说,假设我在一个只收到“lowerDoStuff”的函数中,现在需要知道第一个参数)
惯用的 scala 优于自省/反思(如果可能的话)。
【问题讨论】:
-
我认为如果你需要这样做,那么需要更改以 lowerDoStuff 作为参数的函数的参数。如果一个函数将
(Int, String) => Unit作为其参数类型,那么该类型的 any 函数应该是一个合适的参数。除了由其类型声明的参数之外,您不能安全地对参数做出任何其他假设。
标签: scala currying partial-application