[解決済み] F#の名前空間とモジュールの違いは何ですか?
質問
F#を学び始めたばかりなので(.NETの経験はほとんどありません)、おそらく非常に単純な質問であることをお許しください。F# の名前空間とモジュールの違いは何ですか?
ありがとうございます。
デイブ
編集部:Brianさん、回答ありがとうございました。それは私が知りたかったことです。 ただ、明確にしておきたいのは、名前空間も同様に開くことができるのでしょうか(C#のusing文に似ている)?
どのように解決するのですか?
名前空間は .Net のもので、多くの強力な言語で一般的です。フレームワークを整理し、異なるライブラリ間での名前の競合を回避するための方法です。 あなたと私の両方が型 "Foo" を定義し、それらが異なる名前空間にある限り、プロジェクトでそれらを両方使用できます (たとえば NS1.Foo と NS2.Foo など)。 .Netの名前空間は型を含んでいます。
モジュールはF#のもので、quot;static class"にほぼ類似しています。それは、型と同様にlet-bound値と関数を保持できる実体です(名前空間は直接値や関数を含むことができないことに注意してください。) モジュール内のものは"ModuleName.Thing"で参照できます。これは名前空間と同じ構文ですが、F#のモジュールは、例えば、非限定アクセスを可能にするために「開く」ことも可能です。
open ModuleName
...
Thing // rather than ModuleName.Thing
(編集: 名前空間も同様に開くことができますが、モジュールが値や関数を含むことができるという事実は、モジュールを開くことをより「興味深い」ものにしています。)
F#で「トップレベル」のコードを入力すると、このコードは暗黙のうちにモジュールに入ります。
かなり自由度の高い質問なので、多少なりともお役に立てれば幸いです :)
関連
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] CommonJSとAMDとRequireJSの関係?
-
[解決済み] PythonモジュールとPythonパッケージの違いは何ですか?
-
[解決済み] Pythonモジュールのソースの場所を見つけるにはどうしたらいいですか?
-
[解決済み] クラスとモジュールの違い
-
[解決済み】Rubyのincludeとextendの違いって何?
-
[解決済み】Angularコンポーネントとモジュールの違いとは?
-
[解決済み】CSSの*と*|*の違いは何ですか?
-
[解決済み] Objective-Cの名前空間の衝突を解決する最善の方法は何ですか?
-
[解決済み] OCaml/F#の関数はなぜデフォルトで再帰的でないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン