F# 入门(十二):Tuple(元组)

来源:互联网 发布:数据库管理员能干什么 编辑:程序博客网 时间:2024/04/28 11:00

元组是F#中特有的一种数据类型,一种非常方便的数据类型,类型为System.Tuple<_>。

它是一些值的组合,通过逗号来分隔每个元素,元素可以是任何的数据类型。

 

元组和链表的区别:

链表:元素的个数是可变的,但元素必须是相同的数据类型。

元组:元素的个数是固定的,元素的类型可以是不同的数据类型。

使用元组的一个好处就是,如果用元组来作为函数的返回值进行返回,就可以很方便地从一个函数中返回多个值。

元组的表示方法:

     (元素1,元素2,…,元素n)

 

下面是一些示例:

> let dinner = ("green eggs", "ham");; //两个字符串组成的元组

val dinner : string * string = ("green eggs", "ham")

> let zeros = (0, 0L, 0I, 0.0);; //各种数字类型组成的元组,分别对应下面的类型

val zeros: int * int64 * System.Numerics.BigInteger * float = (0, 0L, 0, 0.0)

>

 

元组的数据类型是各元素的数据类型之间用*连结起来所构成的新的数据类型。

元组也可以嵌套元组:

> let nested = (1, (2.0, 3M), (4L, "5", '6'));; //一个元组中嵌套了两个元组

val nested : int * (float * decimal) * (int64 * string * char) =

    (1, (2.0, 3M), (4L, "5", '6'))

>

 

使用元组中的元素的时候,第一个元素叫fst,第二个元素叫snd,使用第三个以上的元素时用模式匹配。

> let nameTuple = ("John", "Smith");;

val nameTuple : string * string = ("John", "Smith")

> fst nameTuple;;

val it :string = "John"

> snd nameTuple;;

val it :string = "Smith"

> let snacks = ("Soda", "Cookies","Candy");; //含有三个以上元素的元组

val snacks : string * string * string = ("Soda", "Cookies","Candy")

> let x, y, z = snacks;; //用多个变量来匹配各个元素的值

val z :string = "Candy"

val y :string = "Cookies"

val x :string = "Soda"

> x;;

val it :string = "Soda"

>

 

元组作为参数传递给函数,注意跟普通部分函数的区别:

> let add x y = x + y;; //部分函数,顾名思义就是可以拆分的函数

//它可以被拆分使用,提高代码使用率,比如碰到每个操作都有某个相同参数时:

//如计算每个元素加一后的值

//let  fun1 = add 1

//let  fun2 y = fun1 y

val add :int -> int -> int

> let tupledAdd(x, y) = x + y;;

val tupledAdd : int * int -> int

> add3 7;;

val it :int = 10

>tupledAdd(3, 7);;

val it :int = 10

>

原创粉丝点击