F#入门-第二章 F#基础-第八节 for循环
本节对F#中的for循环进行介绍。
以下是F#中的基本的for循环的编写方法。
- for循环
- for语句1 := for 循环变量 = 表达式1 to 表达式2 do 表达式3 done
for语句2 := for 循环变量 in 表达式4 do 表达式5 done
for语句1是c语言风格的循环方式。for语句2是一般所说的foreach循环。
for语句2在F#中称作sequence循环。
for语句1是在表达式1中将循环变量进行初始化,循环执行表达式3,一直循环到循环变量与表达式2相等时停止循环。
for i=0 to 5 do print_endline (Int32.to_string i) done;; |
上述代码为将0开始一直到5之间的6个数值进行标准输出显示。(标准输出指输出到默认设备上,一般指控制台的显示界面。)
在for语句2中,将表达式4中的元素一个个绑定给循环变量,然后执行表达式5。
for i in [1;2;3;4;5;] do print_endline (Int32.to_string i) done;; |
上述代码中,将列表或数组中的元素,用foreach风格的循环进行循环输出。
因为不在列表中或数组的元素是访问不到的,所以当循环访问列表或数组时,这种风格比C语言风格的循环更加具有优势。
正如上述例子所示,对象只要有序列,就可以进行循环访问。具体来说,只要是以下对象,就可以循环访问。
列表或数组
所有seq数据类型
所有支持GetEnumerator方法的数据类型
前几个例子因为是列表,所以把用分号分隔开的所有元素都绑定给了变量i,然后逐个执行显示语句.
最后一个例子是针对二维列表进行的循环,所以进行了模式匹配功能.第一个元素("melon","fruit")与(a,b)相比对,将"melon"匹配给a,"fruit"匹配给b,然后执行后面的输出语句,二维列表中后面的其它元素都照此办理。具体参照模式匹配一节。
使用这种foreach循环方式,可以对.Net Framework的集合(因为封装了GetEnumerator方法)进行迭代(遍历集合中每一个元素)。
另外,for循环不仅可以用来进行循环访问,还可以将循环的结果用列表进行保存。
另外,下述例子中的->符号读作yield。
> [1..3];; |
F#是十分简便的编程方法,所以可以用[a..b]的写法代表连续数值的列表。
上述代码为将[1..3]这个列表中的每个元素乘以2,然后按顺序组合输出[1..3]、[2..4]这样的列表。

浙公网安备 33010602011771号