F# - 模組



根據 MSDN 庫,F# 模組是 F# 程式碼結構(例如型別、值、函式值和 do 繫結中的程式碼)的組合。它實現為一個公共語言執行時 (CLR) 類,該類只有靜態成員。

根據整個檔案是否包含在模組中,模組宣告有兩種型別:

  • 頂級模組宣告
  • 區域性模組宣告

在頂級模組宣告中,整個檔案都包含在模組中。在這種情況下,檔案中的第一個宣告是模組宣告。您不必縮排頂級模組中的宣告。

在區域性模組宣告中,只有在該模組宣告下縮排的宣告才是模組的一部分。

語法

模組宣告的語法如下:

// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
   declarations

// Local module declaration.
module [accessibility-modifier] module-name =
   declarations

請注意,訪問修飾符可以是以下之一:public、private、internal。預設為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
廣告
© . All rights reserved.