Modules
优质
小牛编辑
125浏览
2023-12-01
根据MSDN库,F#模块是一组F#代码构造,例如类型,值,函数值和do绑定中的代码。 它被实现为仅具有静态成员的公共语言运行时(CLR)类。
根据情况,整个文件是否包含在模块中,有两种类型的模块声明 -
- 顶级模块声明
- 本地模块声明
在顶级模块声明中,整个文件包含在模块中。 在这种情况下,文件中的第一个声明是模块声明。 您不必在顶级模块中缩进声明。
在本地模块声明中,只有在该模块声明下缩进的声明才是模块的一部分。
语法 (Syntax)
模块声明的语法如下 -
// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
declarations
请注意,accessibility-modifier可以是以下之一 - public,private,internal。 默认为public 。
以下示例将演示概念 -
例子1 (Example 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 (Example 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