F#-モジュール
MSDNライブラリによると、F#モジュールは、型、値、関数値、doバインディング内のコードなどのF#コード構造のグループです。これは、静的メンバーのみを持つ共通言語ランタイム(CLR)クラスとして実装されます。
ファイル全体がモジュールに含まれるかどうかの状況に応じて、2つのタイプのモジュール宣言があります-
- トップレベルのモジュール宣言
- ローカルモジュール宣言
トップレベルのモジュール宣言では、ファイル全体がモジュールに含まれます。この場合、ファイルの最初の宣言はモジュール宣言です。トップレベルモジュールで宣言をインデントする必要はありません。
ローカルモジュール宣言では、そのモジュール宣言の下にインデントされている宣言のみがモジュールの一部です。
構文
モジュール宣言の構文は次のとおりです-
// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
declarations
アクセシビリティ修飾子は、パブリック、プライベート、内部のいずれかになります。デフォルトはpublic。
次の例は、概念を示しています-
例1
モジュールファイルArithmetic.fs−
module Arithmetic
let add x y =
x + y
let sub x y =
x - y
let mult x y =
x * y
let div x y =
x / y
プログラムファイルmain.fs−
// Fully qualify the function name.
open Arithmetic
let addRes = Arithmetic.add 25 9
let subRes = Arithmetic.sub 25 9
let multRes = Arithmetic.mult 25 9
let divRes = Arithmetic.div 25 9
printfn "%d" addRes
printfn "%d" subRes
printfn "%d" multRes
printfn "%d" divRes
プログラムをコンパイルして実行すると、次の出力が生成されます。
34
16
225
2
110
90
1000
10
例2
// Module1
module module1 =
// Indent all program elements within modules that are declared with an equal sign.
let value1 = 100
let module1Function x =
x + value1
// Module2
module module2 =
let value2 = 200
// Use a qualified name to access the function.
// from module1.
let module2Function x =
x + (module1.module1Function value2)
let result = module1.module1Function 25
printfn "%d" result
let result2 = module2.module2Function 25
printfn "%d" result2
プログラムをコンパイルして実行すると、次の出力が生成されます。
125
325