F#模块声明

/ / F#模块声明

F#模块是F#代码构造的组合,如类型,值,函数值和do绑定中的代码,它被实现为仅具有静态成员的公共语言运行时(CLR)类。

根据情况,整个文件是否包含在模块中,有两种类型的模块声明-

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/fsharp-modules.html

来源:LearnFk无涯教程网

  • 顶级模块声明
  • 本地模块声明

在顶层模块声明中,整个文件都包含在模块中,在这种情况下,文件中的第一个声明是模块声明。

在本地模块声明中,只有在该模块声明下缩进的声明才是模块的一部分。

//顶级模块声明。
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

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

玩转 AI 办公提效工具 -〔尹会生〕

AI Agent智能体实战课 -〔周文洋〕

手把手带你写一个 MiniTomcat -〔郭屹〕

云时代的JVM原理与实战 -〔康杨〕

大厂设计进阶实战课 -〔小乔〕

深入浅出分布式技术原理 -〔陈现麟〕

说透数字化转型 -〔付晓岩〕

编译原理之美 -〔宫文学〕

玩转Git三剑客 -〔苏玲〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者