在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