F#模块是F#代码构造的组合,如类型,值,函数值和do绑定中的代码,它被实现为仅具有静态成员的公共语言运行时(CLR)类。
根据情况,整个文件是否包含在模块中,有两种类型的模块声明-
- 顶级模块声明
- 本地模块声明
在顶层模块声明中,整个文件都包含在模块中,在这种情况下,文件中的第一个声明是模块声明。
在本地模块声明中,只有在该模块声明下缩进的声明才是模块的一部分。
//顶级模块声明。 module [accessibility-modifier] [qualified-namespace.]module-name declarations //本地模块声明。 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 = //缩进模块中用等号声明的所有程序元素。 let value1 = 100 let module1Function x = x + value1 //Module2 module module2 = let value2 = 200 //使用限定名称访问该函数。 //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
参考链接
https://www.learnfk.com/fsharp/fsharp-modules.html
标签:25,教程,无涯,module,let,模块,声明,Arithmetic From: https://blog.51cto.com/u_14033984/8619968