F#记录(Records)

/ / F#记录(Records)

记录(Records)类似于元组,但是它包含命名字段。例如,

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

定义记录

使用 type 关键字将记录定义为类型,并将记录的字段定义为以分号分隔的列表。

定义记录的语法是-

type recordName =
   { [ fieldName : dataType ] + }

创建记录

您可以通过指定记录的字段来创建记录,例如,让无涯教程创建一个名为 homepage 的网站记录-

无涯教程网

let homepage={ Title="LearnFk"; Url="www.learnfk.com" }

例子1

该程序定义了一个名为网站的记录类型。然后,它创建一些类型为website的记录并打印记录。

(* defining a record type named website *)
type website =
   { Title : string;
      Url : string }

(* creating some records *)
let homepage = { Title = "LearnFk"; Url = "www.learnfk.com" }
let cpage = { Title = "Learn C"; Url = "www.learnfk.com/cprogramming/index.htm" }
let fsharppage = { Title = "Learn F#"; Url = "www.learnfk.com/fsharp/index.htm" }
let csharppage = { Title = "Learn C#"; Url = "www.learnfk.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

编译并执行程序时,将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/fsharp-records.html

来源:LearnFk无涯教程网

Home Page: Title: "LearnFk"
       URL: "www.learnfk.com"
C Page: Title: "Learn C"
      URL: "www.learnfk.com/cprogramming/index.htm"
F# Page: Title: "Learn F#"
      URL: "www.learnfk.com/fsharp/index.htm"
C# Page: Title: "Learn C#"
      URL: "www.learnfk.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()

编译并执行程序时,将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/fsharp-records.html

来源:LearnFk无涯教程网

Before Registration: : {Name="Zara";
   ID=10;
   RegistrationText=null;
   IsRegistered=false;}
After Registration: : {Name="Zara";
   ID=10;
   RegistrationText="Registered";
   IsRegistered=true;}

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

极客时间VIP · 干货直播稿精选 -〔极客时间〕

人人都是prompt工程师 -〔北冥〕

Serverless入门课 -〔蒲松洋(秦粤)〕

NLP实战高手课 -〔王然〕

安全攻防技能30讲 -〔何为舟〕

高并发系统设计40问 -〔唐扬〕

Elasticsearch核心技术与实战 -〔阮一鸣〕

Kafka核心技术与实战 -〔胡夕〕

机器学习40讲 -〔王天一〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者