2010-09-17 130 views
2

快速的問題。我剛剛讀到,如果你想添加一個功能,例如列表模塊,你可以定義一個新的列表模塊與功能:F#模塊可以猴子修補嗎?

module List 
    let foo = // ... 

,這都增加foo到主目錄模塊的作用,還是你必須明確地打開新的List?前者好像是Ruby的「猴子補丁」;我想後者會更像擴展方法。

(我嘗試了這一點,但我不是附近的編譯器。)

回答

4

這是一個很像命名空間;他們是「開放的」。也就是說,我可以有兩個文件或兩個組件有助於類型到一個命名空間,然後如果我使用這些文件或引用這些組件,並說

open ThatNamespace 

我看到所有成員的聯合。

3

這個工作在類似於擴展方法一個時尚:

module List = 
    let doSomething lst v = lst |> List.nth v