Fsharp-modules

提供:Dev Guides
移動先:案内検索

F#-モジュール

MSDNライブラリによると、F#モジュールは、型、値、関数値、do inバインディングなどの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