名前空間内でそのような修飾子を使用するprivate
と、型またはモジュールがファイルに対してプライベートになります。つまり、型は同じファイル内のその下のすべてで使用できます。
型がコンパイルされると、F# コンパイラはそれをinternal
.NET メタデータ内として扱います。(これは理にかなっています。型は実際にはinternal
- コンパイラは、同じファイル内の型/関数でのみ使用できるという制約を適用するだけです。)
私はこの機能をかなり頻繁に使用します。IntelliSense が乱雑になるのを防ぐため、内部でいくつかの場所でのみ使用される小さなヘルパー タイプに適しています。
EDIT:これを使用できるもう1つのクールなトリックは、ファイルスコープの「組み込み」ヘルパー関数を作成することです。
このようなモジュールを作成すると、その中の関数はその下にあるものから自動的に利用可能になります ( のおかげで[<AutoOpen>]
) が、モジュールがマークされprivate
ているため、関数が IntelliSense を詰まらせたり (他のソース ファイルで作業している場合)、隠れたりすることはありません。既存の機能。
[<AutoOpen>]
module private Helpers =
let [<Literal>] blah = "blah"
let lessThanTwo value =
value < 2.0