F # - Moduli
Come per la libreria MSDN, un modulo F # è un raggruppamento di costrutti di codice F #, come tipi, valori, valori di funzione e codice in associazioni do. È implementato come una classe CLR (Common Language Runtime) che ha solo membri statici.
A seconda della situazione se l'intero file è incluso nel modulo, ci sono due tipi di dichiarazioni del modulo:
- Dichiarazione del modulo di primo livello
- Dichiarazione del modulo locale
In una dichiarazione di modulo di primo livello, l'intero file è incluso nel modulo. In questo caso, la prima dichiarazione nel file è la dichiarazione del modulo. Non è necessario indentare le dichiarazioni in un modulo di primo livello.
In una dichiarazione di modulo locale, solo le dichiarazioni che sono rientrate in quella dichiarazione di modulo fanno parte del modulo.
Sintassi
La sintassi per la dichiarazione del modulo è la seguente:
// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
declarations
Tieni presente che il modificatore di accessibilità può essere uno dei seguenti: pubblico, privato, interno. L'impostazione predefinita èpublic.
I seguenti esempi dimostreranno i concetti:
Esempio 1
Il file del modulo 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
Il file di programma 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
Quando compili ed esegui il programma, restituisce il seguente output:
34
16
225
2
110
90
1000
10
Esempio 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
Quando compili ed esegui il programma, restituisce il seguente output:
125
325