5
是否可以在本地限制模塊的導入,最好是將其與Module Abbreviations
相結合?目標是避免使用導入符號污染我當前的模塊。如何限制F#中模塊的導入到本地範圍?
例如(受OCaml啓發)類似的東西:
let numOfEvenIntegersSquaredGreaterThan n =
let module A = Microsoft.FSharp.Collections.Array in
[|1..100|] |> A.filter (fun x -> x % 2 = 0)
|> A.map (fun x -> x * x)
|> A.filter (fun x -> x > n)
|> A.length
let elementsGreaterThan n =
let module A = Microsoft.FSharp.Collections.List in
[1..100] |> A.filter (fun x -> x > n)
另外有沒有一種方法來實現與命名空間類似的東西?
謝謝您的回答洛朗。使用數組只是一個隨心所欲的事情 - 但回想起來不幸的是 - 例子。我的目標是在一個有限範圍內打開一個任意的Module(或名稱空間)_only_,就像在一個「let綁定」中一樣。如果我的理解正確,這是(目前?)在F#中不可能? – 2011-04-12 12:19:09
確實。我希望將來有可能。與此同時,我認爲在全球範圍內添加一些縮寫並不會污染太多(但要儘量避免使用1個字符的名稱)。 – Laurent 2011-04-12 12:23:03
好的謝謝,讓我們期待未來:) – 2011-04-12 14:00:44