モジュール
継承、インターフェイスと直接かかわりがあるわけではありませんが、ベータ2にて変更された機能の追加説明として、モジュールについて解説したいと思います。
モジュールとは、クラスや値などのコードのグループのことで、関連したコードをグループ化したり、オブジェクトの名前の重複による問題を解決したりするのに使用されます。名前空間には値やファンクションを直接宣言できないため、それらを宣言したモジュールを含めます。クラスやdo式は直接名前空間に含めることが可能です。
モジュールはライブラリとして、別ファイルにxxx.fsという形式で保存します。同じプロジェクト内のファイルからこのコードを呼び出す際には、作成されたdllファイルを参照として追加し、修飾名を使用するか、モジュールをopenします。修飾名の使用とは、例えば、testModuleというモジュールのtestMethodというメソッドを使用する場合、testModule.testMethodというようにメソッド名の前にモジュール名とドットをつけます。
// トップレベルモジュール宣言 module [アクセス修飾子] [名前空間.]モジュール名 宣言 // ローカルモジュール宣言 module [アクセス修飾子] モジュール名 = 宣言
トップレベルモジュールはそのファイル内すべてが対象で、1つのファイルに複数のモジュールを宣言する場合には、ローカルモジュール宣言を使用します。
//toplevelModule.fsというファイルに以下のコードを記述してライブラリとして保存
module toplevelModule
let testMethod x y =
x + y
//モジュール名.メソッド名 let testItem = toplevelModule.testMethod 2 3 // // もしくはファイルのトップにてモジュールをopenする //open toplevelModule //let testItem = tesstMethod 2 3 Console.WriteLine(testItem);;
今バージョンから、F#のモジュール用の.fsファイルはすべてトップにモジュールの宣言(名前空間の場合は名前空間の宣言)を必要とするようになりました。
今バージョンでは、メソッドに異なる種類のパラメータを渡す場合に使用するOverloadID属性の設定が不要になるなど属性に関する機能などの変更はあったようですが、今後重複機能の削除以外にはソースレベルの変更は行わない予定のようです。
まとめ
今回はF#のオブジェクト指向の一部分である継承とインターフェイスについて紹介しました。従来のオブジェクト指向と概念的に大きな違いはありませんが、オブジェクトの宣言、実装における小さな違いを覚えて上手に使いこなしてください。次回は「F#のクラス拡張」について、解説予定です。
- 修正履歴
-
- 2010/01/25 22:02 読者コメント指摘により、一部表現を訂正。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- C#プログラマのためのF#入門連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 星山 仁美(ホシヤマ ヒトミ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
