F#教程: List


接着上回的数组,这回我们学习list。

#light
let lista = [1;2;3;4;5] 
let listb = [6..10] 
let listc = lista @ listb 
printfn "%A" listc

  和用[| ...|]来表示数组不同,list通过[ ... ]表示,而不用|。和数组一样的是,要素之间通过;(分号)分开,是不是觉得有点奇怪啊?

  list的连接通过@运算符,有了它就很方便了。这和通过函数进行list连接相比,可读性也提高了。

  运行结果是:

  [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]

  要在list头部插入要素可以使用如下代码:

let liste = 10::lista
printfn "%A" liste

  其中,::运算符就可以在list的头部之前插入要素。

  调查后发现,好像没有在list尾部加入要素的运算符号。

  从list中一个一个取出要素,通过使用for就可以简单实现:

for n in liste do
printfn "%d" n

  这和C#的foreach一样。

  经过刚才的学习之后,就可以试着写如下计算list要素总和的代码了。

#light 
let rec SumTotal list = 
        if list = []    then 0 
        else List.hd list + SumTotal (List.tl list) 
printfn "%d" (SumTotal lista)

  这样就可以避免变量的再赋值,但是使用了递归处理。 C#很难写的程序,用了F#的话,就会有更多的思考和考虑的时间。

  和loop处理相比,感觉递归处理更优雅!这样就可以不必过多考虑如何写代码,而关注要写什么。

  List.hd是用来取出list的第一个元素的函数。

  List.tl是返回除了第一个元素以外剩下元素组成list的函数。

  在Visual Studio中,输入List.后就会显示出很多相关的函数。这些可以在以后继续调查。

  此外,分支处理中还使用了 Haskell中也有的Pattern Match。这些在今后的文章中也会继续关注


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3