F # - Cấu trúc
Một cấu trúc trong F # là một kiểu dữ liệu kiểu giá trị. Nó giúp bạn tạo một biến duy nhất, giữ dữ liệu liên quan của nhiều kiểu dữ liệu khác nhau. Cácstruct từ khóa được sử dụng để tạo cấu trúc.
Cú pháp
Cú pháp để xác định một cấu trúc như sau:
[ attributes ]
type [accessibility-modifier] type-name =
struct
type-definition-elements
end
// or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
type-definition-elements
Có hai cú pháp. Cú pháp đầu tiên chủ yếu được sử dụng, bởi vì, nếu bạn sử dụngstruct và end từ khóa, bạn có thể bỏ qua StructAttribute thuộc tính.
Các yếu tố định nghĩa cấu trúc cung cấp -
- Tuyên bố thành viên và định nghĩa.
- Các trình xây dựng và các trường có thể thay đổi và bất biến.
- Thành viên và triển khai giao diện.
Không giống như các lớp, các cấu trúc không thể được kế thừa và không thể chứa các ràng buộc let hoặc do. Vì, cấu trúc không có ràng buộc; bạn phải khai báo các trường trong cấu trúc bằng cách sử dụngval từ khóa.
Khi bạn xác định một trường và kiểu của nó bằng cách sử dụng valtừ khóa, bạn không thể khởi tạo giá trị trường, thay vào đó chúng được khởi tạo bằng 0 hoặc null. Vì vậy, đối với một cấu trúc có một phương thức khởi tạo ngầm định,val khai báo được chú thích với DefaultValue thuộc tính.
Thí dụ
Chương trình sau đây tạo một cấu trúc dòng cùng với một hàm tạo. Chương trình tính toán độ dài của một dòng bằng cách sử dụng cấu trúc:
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
Khi bạn biên dịch và thực thi chương trình, nó sẽ tạo ra kết quả sau:
Length of the Line: 5