Структура в 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 .
пример
Следующая программа создает структуру линии вместе с конструктором. Программа рассчитывает длину строки, используя структуру —
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
Когда вы компилируете и запускаете программу, она выдает следующий вывод: