Учебники

F # — Записи

Запись похожа на кортеж, однако содержит именованные поля. Например,

type website =
   { title : string;
     url : string }

Определение записи

Запись определяется как тип с использованием ключевого слова type , а поля записи определяются как список, разделенный точкой с запятой.

Синтаксис для определения записи —

type recordName =
   { [ fieldName : dataType ] + }

Создание записи

Вы можете создать запись, указав ее поля. Например, давайте создадим запись веб-сайта с именем homepage

let homepage = { Title = "TutorialsPoint"; Url = "www.tutorialspoint.com" }

Следующие примеры объяснят понятия —

Пример 1

Эта программа определяет тип записи с именем веб-сайта. Затем он создает некоторые записи типа веб-сайта и печатает записи.

Live Demo

(* 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

Live Demo

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()

Когда вы компилируете и запускаете программу, она выдает следующий вывод: