F # - Aufzeichnungen
EIN recordähnelt einem Tupel, enthält jedoch benannte Felder. Zum Beispiel,
type website =
{ title : string;
url : string }
Datensatz definieren
Ein Datensatz wird als Typ mit dem definiert type Schlüsselwort und die Felder des Datensatzes werden als durch Semikolons getrennte Liste definiert.
Die Syntax zum Definieren eines Datensatzes lautet -
type recordName =
{ [ fieldName : dataType ] + }
Datensatz erstellen
Sie können einen Datensatz erstellen, indem Sie die Felder des Datensatzes angeben. Lassen Sie uns zum Beispiel einen Website- Datensatz mit dem Namen homepage erstellen -
let homepage = { Title = "TutorialsPoint"; Url = "www.tutorialspoint.com" }
Die folgenden Beispiele erläutern die Konzepte -
Beispiel 1
Dieses Programm definiert einen Datensatztyp mit dem Namen website. Anschließend werden einige Datensätze vom Typ Website erstellt und die Datensätze gedruckt.
(* 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
Wenn Sie das Programm kompilieren und ausführen, wird die folgende Ausgabe ausgegeben:
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"
Beispiel 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()
Wenn Sie das Programm kompilieren und ausführen, wird die folgende Ausgabe ausgegeben:
Before Registration: : {Name = "Zara";
ID = 10;
RegistrationText = null;
IsRegistered = false;}
After Registration: : {Name = "Zara";
ID = 10;
RegistrationText = "Registered";
IsRegistered = true;}