修飾子をネームスペース内のように使用すると、そのタイプまたはモジュールがファイルに対してプライベートになります。つまり、同じファイル内でそのタイプの下位に使用できます。
型がコンパイルされると、F#コンパイラは.NETメタデータ内でinternal
として扱います。コンパイラは、同じファイル内の型/関数でのみ使用できるという制約を適用します。
私はこの機能をかなり頻繁に使用していますIntelliSenseが乱雑にならないようにしているため、いくつかの場所で内部的にしか使用されない小さなヘルパーのタイプです。
EDIT:ファイルスコープの「組み込み」ヘルパー関数を作成することもできます。
あなたは、このようなモジュールを作成する場合、その関数は([<AutoOpen>]
のおかげで)その下に何を自動的に利用できるようになりますが、モジュールがマークされているので、あなたの上で作業するときprivate
機能は(あなたのIntelliSenseを詰まらないだろう他のソースファイル)または既存の機能を隠す。
[<AutoOpen>]
module private Helpers =
let [<Literal>] blah = "blah"
let lessThanTwo value =
value < 2.0
これらのトリック(プライベートタイプまたはプライベートモジュール)のどちらも私にとっては役に立ちません。私はF#3.1と.NET 4.5.1を使用しています。私のプライベートタイプは別のファイルから使用できます。ヘルパーモジュールを2つの異なるファイルに貼り付けると、同じ名前の2つのモジュールがあるというコンパイルエラーが発生します。 – bananasareyellow
https://github.com/Microsoft/visualfsharp/issues/43#issuecomment-70650925 – bananasareyellow