F # - Estructuras

Una estructura en F # es un tipo de datos de tipo valor. Le ayuda a crear una sola variable, mantener datos relacionados de varios tipos de datos. losstruct La palabra clave se utiliza para crear una estructura.

Sintaxis

La sintaxis para definir una estructura es la siguiente:

[ attributes ]
type [accessibility-modifier] type-name =
   struct
      type-definition-elements
   end
// or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
   type-definition-elements

Hay dos sintaxis. La primera sintaxis se usa principalmente, porque, si usa lastruct y end palabras clave, puede omitir las StructAttribute atributo.

Los elementos de definición de estructura proporcionan:

  • Declaraciones y definiciones de miembros.
  • Constructores y campos mutables e inmutables.
  • Implementaciones de interfaces y miembros.

A diferencia de las clases, las estructuras no se pueden heredar y no pueden contener enlaces let o do. Dado que, las estructuras no tienen enlaces; debe declarar campos en estructuras utilizando elval palabra clave.

Cuando define un campo y su tipo usando valpalabra clave, no puede inicializar el valor del campo, sino que se inicializan a cero o nulo. Entonces, para una estructura que tiene un constructor implícito, elval las declaraciones se anotarán con el DefaultValue atributo.

Ejemplo

El siguiente programa crea una estructura de línea junto con un constructor. El programa calcula la longitud de una línea usando la estructura -

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

Cuando compila y ejecuta el programa, produce el siguiente resultado:

Length of the Line: 5