F#入门-第二章 F#基础-第十二节 列表

    列表是数据的集合。
    F#的列表是线性列表的一种,单方向列表。
    单方向列表是基本的数据结构之一,一种携带指向下一个元素的指针的数据结构。
    列表中的元素必须是相同数据类型。

    完全没有元素的列表叫空列表,用[]来表示。   
    另外,列表中的元素用";"来分隔。

列表
> [];;
val it : 'a list = []
> [1];;
val it : int list = [1]
> [1;2;3;];;
val it : int list = [1; 2; 3]
> ["abc";"def";"ghi";];;
val it : string list = ["abc"; "def"; "ghi"]
//不同类型的数据不能放在同一个列表中
> [1;"abc"];;
  [1;"abc"];;
stdin(5,4): error FS0001: This expression has type
     string
but is here used with type
     int.


    使用::与@将列表进行连结。
    ::是将元素与列表进行连结的运算符。
    ::的左侧是元素,::的右侧是列表。
    注意应该放在::的左右两侧的数据类型不能相同。

列表与元素的连结 
> 1::[];;
val it : int list = [1]
> 1::[2];;
val it : int list = [1; 2]
> 1::2::3::[];;
val it : int list = [1; 2; 3]
> 1::2::3::[4;5;6];;
val it : int list = [1; 2; 3; 4; 5; 6]
//以下这样是错的.左右两侧数据类型相同.
> [1]::[2];;
  [1]::[2];;
stdin(14,7): error FS0001: This expression has type
        int
but is here used with type
        int list.

//正确写法如下所示
> [1]::[[2]];;
val it : int list list = [[1]; [2]]


    使用@将列表与列表进行连结。

列表与列表的连结 
> [1;2] @ [3;4;5];;
val it : int list = [1; 2; 3; 4; 5]
> ["abc";"def"] @ ["ghi"];;
val it : string list = ["abc"; "def"; "ghi"]
> 1::[2;3] @ [4;5;6];;
val it : int list = [1; 2; 3; 4; 5; 6]


    对于列表,有着更简便的写法。
    使用[开始元素..最末元素],生成从开始元素到最末元素之间所有元素的列表。
    同时,开始元素与最末元素之间按照给定的增量进行增长,一直到增加了增量后的值大于最末元素。默认的增量为1。

列表的简便写法
> [1..10];;
val it : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
> [1..2..10];;
val it : int list = [1; 3; 5; 7; 9]
> [1..3..20];;
val it : int list = [1; 4; 7; 10; 13; 16; 19]
posted @ 2010-10-05 18:06  至尊无上  阅读(967)  评论(0)    收藏  举报