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

面向对象技术开发

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

F#教程:List内包式

来源: www.bianceng.cn 阅读:

F#的List和数组中,有一种被称为内包式的特殊标记方法。使用了这些,list相关的代码就会变得很简洁。我们就试着写如下代码:

let evenarray = [| for x in 0..10 -> x*2 |]
printfn "%A" evenarray

运行结果是:

[|0; 2; 4; 6; 8; 10; 12; 14; 16; 18; 20|]

生成list的代码如下:

let tupleList = [ for x in 0..5 -> x, x * x ]
printfn "%A" tupleList

这次运行的结果是:

[(0, 0); (1, 1); (2, 4); (3, 9); (4, 16); (5, 25)]

如果不使用内包的话,代码可能非得如下这样不可:

let evenarray = Array.create 11 0
for i in 0..10 do
     evenarray.[i] <- i * 2

是不是感觉有点麻烦啊?

对于list,如果不使用list内包式是不是应该如下这样啊?

let mutable evenlist = []
for i in 0..10 do
     evenlist <- List.append evenlist [(i * 2)]

不使用mutable的话好像还不行。这里的append有点像C#的静态函数吧?

有了内包式,就不要写这么麻烦的代码了。

此外,生成增量递增的数组或list的时候还可以使用“初始值..增量..终止值”的写法:

let a = [| 0..2..20 |]
let b = [100..-10..0]

使用F#还真的可以写很简洁的代码!

Tags:
相关文章列表: