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