F # - Hồ sơ
A recordtương tự như một tuple, tuy nhiên nó chứa các trường được đặt tên. Ví dụ,
type website =
{ title : string;
url : string }
Xác định bản ghi
Bản ghi được định nghĩa là một loại bằng cách sử dụng type từ khóa và các trường của bản ghi được xác định dưới dạng danh sách được phân tách bằng dấu chấm phẩy.
Cú pháp để xác định một bản ghi là:
type recordName =
{ [ fieldName : dataType ] + }
Tạo bản ghi
Bạn có thể tạo bản ghi bằng cách chỉ định các trường của bản ghi. Ví dụ: hãy để chúng tôi tạo một bản ghi trang web có tên là trang chủ -
let homepage = { Title = "TutorialsPoint"; Url = "www.tutorialspoint.com" }
Các ví dụ sau đây sẽ giải thích các khái niệm -
ví dụ 1
Chương trình này xác định một loại bản ghi có tên là trang web. Sau đó, nó tạo ra một số bản ghi của loại trang web và in các bản ghi.
(* defining a record type named website *)
type website =
{ Title : string;
Url : string }
(* creating some records *)
let homepage = { Title = "TutorialsPoint"; Url = "www.tutorialspoint.com" }
let cpage = { Title = "Learn C"; Url = "www.tutorialspoint.com/cprogramming/index.htm" }
let fsharppage = { Title = "Learn F#"; Url = "www.tutorialspoint.com/fsharp/index.htm" }
let csharppage = { Title = "Learn C#"; Url = "www.tutorialspoint.com/csharp/index.htm" }
(*printing records *)
(printfn "Home Page: Title: %A \n \t URL: %A") homepage.Title homepage.Url
(printfn "C Page: Title: %A \n \t URL: %A") cpage.Title cpage.Url
(printfn "F# Page: Title: %A \n \t URL: %A") fsharppage.Title fsharppage.Url
(printfn "C# Page: Title: %A \n \t URL: %A") csharppage.Title csharppage.Url
Khi bạn biên dịch và thực thi chương trình, nó sẽ tạo ra kết quả sau:
Home Page: Title: "TutorialsPoint"
URL: "www.tutorialspoint.com"
C Page: Title: "Learn C"
URL: "www.tutorialspoint.com/cprogramming/index.htm"
F# Page: Title: "Learn F#"
URL: "www.tutorialspoint.com/fsharp/index.htm"
C# Page: Title: "Learn C#"
URL: "www.tutorialspoint.com/csharp/index.htm"
Ví dụ 2
type student =
{ Name : string;
ID : int;
RegistrationText : string;
IsRegistered : bool }
let getStudent name id =
{ Name = name; ID = id; RegistrationText = null; IsRegistered = false }
let registerStudent st =
{ st with
RegistrationText = "Registered";
IsRegistered = true }
let printStudent msg st =
printfn "%s: %A" msg st
let main() =
let preRegisteredStudent = getStudent "Zara" 10
let postRegisteredStudent = registerStudent preRegisteredStudent
printStudent "Before Registration: " preRegisteredStudent
printStudent "After Registration: " postRegisteredStudent
main()
Khi bạn biên dịch và thực thi chương trình, nó sẽ tạo ra kết quả sau:
Before Registration: : {Name = "Zara";
ID = 10;
RegistrationText = null;
IsRegistered = false;}
After Registration: : {Name = "Zara";
ID = 10;
RegistrationText = "Registered";
IsRegistered = true;}