2
我想知道是否有辦法在Oz中的變量中綁定整個函數調用。 例如,我有:有沒有辦法在Oz中存儲函數/過程調用?
fun {F1 A1 A2}
A1+A2
end
和局部變量X
。
我想要做什麼,是存儲呼叫(AS-IS){F1 1 2}
在X
,而不是它的結果:3
,讓 我可以通過某種方式參照X
再打電話再次{F1 1 2}
。
這是可能在奧茲嗎?如果是這樣,怎麼樣?
謝謝你的回答。
我想知道是否有辦法在Oz中的變量中綁定整個函數調用。 例如,我有:有沒有辦法在Oz中存儲函數/過程調用?
fun {F1 A1 A2}
A1+A2
end
和局部變量X
。
我想要做什麼,是存儲呼叫(AS-IS){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)將其推廣到任意數量的參數。如果你想這樣做並需要幫助,請告訴我。
謝謝你,這個伎倆。 – mhourdakis 2012-04-26 16:43:10