Учебники

F # — Структуры

Структура в F # является типом данных типа значения. Это поможет вам сделать одну переменную, хранить связанные данные различных типов данных. Ключевое слово struct используется для создания структуры.

Синтаксис

Синтаксис для определения структуры выглядит следующим образом:

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

Есть два синтаксиса. Первый синтаксис в основном используется, потому что, если вы используете ключевые слова struct и end , вы можете опустить атрибут StructAttribute .

Элементы определения структуры обеспечивают —

  • Объявления и определения членов.
  • Конструкторы и изменяемые и неизменные поля.
  • Члены и реализации интерфейса.

В отличие от классов, структуры не могут наследоваться и не могут содержать привязки let или do. Поскольку структуры не имеют привязок let; Вы должны объявить поля в структурах, используя ключевое слово val .

Когда вы определяете поле и его тип с помощью ключевого слова val , вы не можете инициализировать значение поля, вместо этого они инициализируются нулями или нулями. Таким образом, для структуры, имеющей неявный конструктор, объявления val должны быть аннотированы атрибутом DefaultValue .

пример

Следующая программа создает структуру линии вместе с конструктором. Программа рассчитывает длину строки, используя структуру —

Live Demo

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

Когда вы компилируете и запускаете программу, она выдает следующий вывод: