F # - โมดูล
ตามไลบรารี MSDN โมดูล F # คือการจัดกลุ่มโครงสร้างรหัส F # เช่นประเภทค่าค่าฟังก์ชันและรหัสในการเชื่อมโยง ถูกนำไปใช้เป็นคลาสรันไทม์ภาษาทั่วไป (CLR) ที่มีเฉพาะสมาชิกแบบคง
ขึ้นอยู่กับสถานการณ์ว่าไฟล์ทั้งหมดรวมอยู่ในโมดูลหรือไม่มีการประกาศโมดูลสองประเภท -
- การประกาศโมดูลระดับบนสุด
- การประกาศโมดูลภายใน
ในการประกาศโมดูลระดับบนสุดไฟล์ทั้งหมดจะรวมอยู่ในโมดูล ในกรณีนี้การประกาศครั้งแรกในไฟล์คือการประกาศโมดูล คุณไม่จำเป็นต้องเยื้องประกาศในโมดูลระดับบนสุด
ในการประกาศโมดูลโลคัลเฉพาะการประกาศที่เยื้องภายใต้การประกาศโมดูลนั้นเป็นส่วนหนึ่งของโมดูล
ไวยากรณ์
ไวยากรณ์สำหรับการประกาศโมดูลมีดังนี้ -
// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
declarations
โปรดทราบว่าตัวปรับแต่งการช่วยสำหรับการเข้าถึงสามารถเป็นอย่างใดอย่างหนึ่งต่อไปนี้ - สาธารณะส่วนตัวภายใน ค่าเริ่มต้นคือ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