F # - Estruturas
Uma estrutura em F # é um tipo de dados de tipo de valor. Ajuda você a criar uma única variável, manter dados relacionados de vários tipos de dados. ostruct palavra-chave é usada para criar uma estrutura.
Sintaxe
A sintaxe para definir uma estrutura é a seguinte -
[ attributes ]
type [accessibility-modifier] type-name =
struct
type-definition-elements
end
// or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
type-definition-elements
Existem duas sintaxes. A primeira sintaxe é mais usada, porque, se você usar ostruct e end palavras-chave, você pode omitir o StructAttribute atributo.
Os elementos de definição de estrutura fornecem -
- Declarações e definições dos membros.
- Construtores e campos mutáveis e imutáveis.
- Membros e implementações de interface.
Ao contrário das classes, as estruturas não podem ser herdadas e não podem conter let ou do bindings. Desde então, as estruturas não têm ligações let; você deve declarar campos em estruturas usando oval palavra-chave.
Quando você define um campo e seu tipo usando valpalavra-chave, você não pode inicializar o valor do campo, em vez disso, eles são inicializados para zero ou nulo. Portanto, para uma estrutura com um construtor implícito, oval declarações sejam anotadas com o DefaultValue atributo.
Exemplo
O programa a seguir cria uma estrutura de linha junto com um construtor. O programa calcula o comprimento de uma linha usando a estrutura -
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 você compila e executa o programa, ele produz a seguinte saída -
Length of the Line: 5