F # - Struktury
Struktura w F # jest typem danych typu wartości. Pomaga tworzyć pojedynczą zmienną, przechowywać powiązane dane różnych typów danych. Plikstruct słowo kluczowe służy do tworzenia struktury.
Składnia
Składnia definiowania struktury jest następująca -
[ attributes ]
type [accessibility-modifier] type-name =
struct
type-definition-elements
end
// or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
type-definition-elements
Istnieją dwie składnie. Najczęściej używana jest pierwsza składnia, ponieważ jeśli używaszstruct i end słowa kluczowe, możesz pominąć StructAttribute atrybut.
Elementy definicji konstrukcji zapewniają -
- Deklaracje i definicje członków.
- Konstruktory oraz zmienne i niezmienne pola.
- Elementy członkowskie i implementacje interfejsów.
W przeciwieństwie do klas, struktury nie mogą być dziedziczone i nie mogą zawierać powiązań let lub do. Ponieważ struktury nie pozwalają na powiązania; musisz zadeklarować pola w strukturach przy użyciuval słowo kluczowe.
Podczas definiowania pola i jego typu za pomocą valsłowo kluczowe, nie można zainicjować wartości pola, zamiast tego są one inicjowane na zero lub null. Tak więc w przypadku struktury mającej niejawny konstruktor,val deklaracje należy opatrzyć adnotacją DefaultValue atrybut.
Przykład
Poniższy program tworzy strukturę liniową wraz z konstruktorem. Program oblicza długość linii na podstawie struktury -
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
Kiedy kompilujesz i wykonujesz program, daje to następujące dane wyjściowe -
Length of the Line: 5