F # - Módulos
Según la biblioteca de MSDN, un módulo F # es una agrupación de construcciones de código F #, como tipos, valores, valores de función y código en enlaces do. Se implementa como una clase de Common Language Runtime (CLR) que solo tiene miembros estáticos.
Dependiendo de la situación, si el archivo completo está incluido en el módulo, existen dos tipos de declaraciones de módulo:
- Declaración de módulo de nivel superior
- Declaración de módulo local
En una declaración de módulo de nivel superior, el archivo completo se incluye en el módulo. En este caso, la primera declaración del archivo es la declaración del módulo. No es necesario aplicar sangría a las declaraciones en un módulo de nivel superior.
En una declaración de módulo local, solo las declaraciones que están sangradas bajo esa declaración de módulo son parte del módulo.
Sintaxis
La sintaxis para la declaración del módulo es la siguiente:
// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
declarations
Tenga en cuenta que el modificador de accesibilidad puede ser uno de los siguientes: público, privado, interno. El valor predeterminado espublic.
Los siguientes ejemplos demostrarán los conceptos:
Ejemplo 1
El archivo de módulo 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
El archivo de programa 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
Cuando compila y ejecuta el programa, produce el siguiente resultado:
34
16
225
2
110
90
1000
10
Ejemplo 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
Cuando compila y ejecuta el programa, produce el siguiente resultado:
125
325