F#教程-List - 面向对象网 f# 学习 对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > OOP语言 > F# > 正文

F#教程-List

来源: www.bianceng.cn 阅读:

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

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

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

[email protected][email protected],可读性也提高了。

运行结果是:

[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。这些在今后的文章中也会继续关注。

Tags:
相关文章列表: