Согласно библиотеке 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 может быть одним из следующих — публичный, приватный, внутренний. По умолчанию это общедоступный .
Следующие примеры продемонстрируют концепции —
Пример 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
Когда вы компилируете и запускаете программу, она выдает следующий вывод: