Запись похожа на кортеж, однако содержит именованные поля. Например,
type website = { title : string; url : string }
Определение записи
Запись определяется как тип с использованием ключевого слова type , а поля записи определяются как список, разделенный точкой с запятой.
Синтаксис для определения записи —
type recordName = { [ fieldName : dataType ] + }
Создание записи
Вы можете создать запись, указав ее поля. Например, давайте создадим запись веб-сайта с именем homepage —
let homepage = { Title = "TutorialsPoint"; Url = "www.tutorialspoint.com" }
Следующие примеры объяснят понятия —
Пример 1
Эта программа определяет тип записи с именем веб-сайта. Затем он создает некоторые записи типа веб-сайта и печатает записи.
(* 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
Когда вы компилируете и запускаете программу, она выдает следующий вывод:
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"
Пример 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()
Когда вы компилируете и запускаете программу, она выдает следующий вывод: