根据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
请注意,accessibility-modifier可以是以下之一&减去;公共,私人,内部.默认值为公开.
以下示例将演示概念 :
模块文件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
// 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