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