2012-01-29 113 views
2

我想申請存儲在列表執行的功能

let functions = [(fun() -> print_string "fun 1"); (fun() -> print_string "fun 2")] 

與像List.iter高階功能的功能列表,顯示出「樂趣1」和「2樂趣」

有沒有辦法做到這一點?

回答

5

下面是做到這一點的方式:

List.iter (fun f -> f()) functions 

你的清單包括與簽名unit -> unit功能。因此,如果您爲每個功能提供()作爲參數,則它們將返回unit,這在List.iter內部顯而易見。

+0

一個等效的版本,使用'BatPervasives':'List.iter((|>)())函數' – 2012-01-30 00:54:36

+0

沒錯,但我更喜歡有意義的版本來點一個:)。 – pad 2012-01-30 07:00:37