在F#中,有一个被称为元组(Tuple)的概念,“元组”是一些未命名但经过排序的值的分组,这些值可能具有不同的类型,这篇文章就来将它与C#之中的交换(Swap)做一次比较。

F#,作为一门新兴的语言,相比C#来说,有它更为简单的实现方式,它能让代码变得更加的简洁,也能减少程序的bug,这就是我如此喜欢F#的原因。接下来我们举一些例子来描述F#比C#做的更好的地方,今天这一篇我们谈谈元组与交换之间的区别。

Swap是我能想到的最简单的操作,现在,我想要一个通用的交换方法,它能处理任何类型,在C#中,你可以使用对象类型或者泛型来实现,但无论如何,你必须使用一个临时变量(虽然有些方法可以不通过临时变量来实现这个功能,但不太容易想到或者看懂),然而,F#则能够很简单的实现这个功能:

let swap(a,b) = (b,a)

传递的参数是(a,b)然后我们可以直接得到返回值(b,a),这难道不简单么?

唯一令我感到迷惑的是(a,b)是一个特殊的类型,这就是元组(Tuple),因此,你可以这么理解,在实现交换功能的时候只需要一个单独的参数这就是元组。

元组也支持超过2个参数的方式,这样,你也可以做如下交换:

let swap2(a,b,c,d,e) = (a,c,b,e,d)

同时,你也可以在元组中按你自己的意愿做任意的交换。

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

 

posted on 2012-11-07 16:28  Jeallyn  阅读(2291)  评论(5编辑  收藏  举报