我想知道是否有办法在 Oz 中将整个函数调用绑定(bind)到变量中。 例如,我确实有:
fun {F1 A1 A2}
A1+A2
end
和一个局部变量X
。
我想要做的是将调用(按原样){F1 1 2}
存储在X
中,而不是其结果:3
,这样
我可能会通过引用 X
再次调用 {F1 1 2}
。
这在奥兹国可能吗?如果是这样,怎么办?
感谢您的回答。
最佳答案
最简单的方法是动态创建一个不带参数的函数,例如
fun {CreateCall F A1 A2}
fun {$}
{F A1 A2}
end
end
fun {F A1 A2}
A1 + A2
end
C = {CreateCall F 1 2}
{Show {C}}
函数CreateCall
创建并返回一个匿名空函数,该函数使用给定的参数调用F。 (这种技术类似于 Haskell 等语言中的部分函数应用。)
可以使用库函数 Procedure.apply
( doc ) 将其推广到任意数量的参数。如果您想这样做并需要帮助,请告诉我。
关于functional-programming - 有没有办法在 Oz 中存储函数/过程调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231797/