Dot-Net
F# 將內部模組視為私有模組
任何想法為什麼以下內容無法編譯?
在最後一行它告訴我 Module1 沒有定義。如果我從 Module1 中刪除“內部”,它工作正常。
我有兩個程式碼文件,Module1.fs 在項目中的 Module2.fs 之上。
模組1.fs
module internal Module1 let sample = 5 + 4模組2.fs
module Module2 let sample2 = 3 + Module1.sample
您需要為您的模組提供一個命名空間,以便
internal以後的模組可以看到該模組。let module internal MyNamespace.Module1 let module MyNamespace.Module2
編譯器錯誤
雖然這裡的答案是解決方法,但這種行為仍然是編譯器錯誤。閱讀文件和 Don Syme 的 Expert F#,沒有一點說****只有在您還使用 namespaces時才能訪問內部模組中的類型。
考慮到編譯器發出的程式碼,我認為使內部模組內的類型在程序集中可見並不困難。
編輯: 在將此行為送出給@fsbugs 後,主人本人 Don Syme 很快確認這是一個錯誤。我為這種情況添加了一個工作項: