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ụngstructend 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