继续上一篇叙述Tuple和Swap的文章,现在我们继续探索:相比C#编程,如何轻松的使用F#来减少你的编码工作。

直到最近,我才开始注意到在F#中有一个叫做记录(Record)的类型,之前,我以为它类似于C#中的结构或者,但是,实际并非如此。

首先介绍下什么是记录:记录表示命名值的简单聚合,并可以选择包含成员。

我们先来看如下代码:

type myPointRecord = { X : float; Y::float }
let pointA = { X = 0; Y= 0 }
let pointB = { X = 0; Y = 0 }  

上面定义的两个point实际上是相同的,我们可以用如下简单而且直观的方式来证明:

let isEqual = pointA = pointB

使用Record最大的优势是你可以使用 "=" 操作符来进行内容的比较,我曾试图用 "==" 运算符来对C#定义的两个结构的内容进行比较,不过很可惜,失败了。这是C#中重写Equals和GetHashCode功能的选项,它让一个类能支持非引用类型的比较,但是它是一项很繁琐的工作,尤其当你需要试着让你所有的类都支持这种内容上的比较。

注:此文为译文,如有兴趣请查看blogspot中博主的原文:http://apollo13cn.blogspot.com/2011/11/f-c-record.html

posted on 2012-11-08 17:22  Jeallyn  阅读(2879)  评论(0编辑  收藏  举报