F # - Strutture
Una struttura in F # è un tipo di dati di tipo valore. Ti aiuta a creare una singola variabile, conservare i dati correlati di vari tipi di dati. Ilstruct la parola chiave viene utilizzata per creare una struttura.
Sintassi
La sintassi per definire una struttura è la seguente:
[ attributes ]
type [accessibility-modifier] type-name =
struct
type-definition-elements
end
// or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
type-definition-elements
Esistono due sintassi. La prima sintassi viene utilizzata principalmente, perché, se usi l'estensionestruct e end parole chiave, puoi omettere il StructAttribute attributo.
Gli elementi di definizione della struttura forniscono:
- Dichiarazioni e definizioni dei membri.
- Costruttori e campi mutabili e immutabili.
- Membri e implementazioni dell'interfaccia.
A differenza delle classi, le strutture non possono essere ereditate e non possono contenere legami let o do. Da allora, le strutture non hanno lasciato legami; è necessario dichiarare i campi nelle strutture utilizzando ilval parola chiave.
Quando si definisce un campo e il suo tipo utilizzando valparola chiave, non è possibile inizializzare il valore del campo, ma vengono inizializzati a zero o null. Quindi, per una struttura con un costruttore implicito, ilval le dichiarazioni devono essere annotate con il DefaultValue attributo.
Esempio
Il seguente programma crea una struttura a linee insieme a un costruttore. Il programma calcola la lunghezza di una linea utilizzando la struttura -
type Line = struct
val X1 : float
val Y1 : float
val X2 : float
val Y2 : float
new (x1, y1, x2, y2) =
{X1 = x1; Y1 = y1; X2 = x2; Y2 = y2;}
end
let calcLength(a : Line)=
let sqr a = a * a
sqrt(sqr(a.X1 - a.X2) + sqr(a.Y1 - a.Y2) )
let aLine = new Line(1.0, 1.0, 4.0, 5.0)
let length = calcLength aLine
printfn "Length of the Line: %g " length
Quando compili ed esegui il programma, restituisce il seguente output:
Length of the Line: 5