F#里也有while语句。接下来我们就试着使用while语句写代码。
《不变性》一文中有人评论说可以适用 ref,我们就试着使用下。
while循环的作用域通过缩进表示。
let num = ref 0
while !num < 10 do
num := !num + 1
printfn "%d" !num
ref是表示引用的关键字。把它想象成C语言的指针就好了。num是指针变量,保持了数值0的引用。取值时候使用!操作符。再赋值的时候使用:=。这点和Pascal和类似。
上述代码就是顺序表示 1到10的数。不过可读性很差。我想可能在F#中会很少使用while循环吧。
for语句重写的相同功能的代码如下:
for num = 1 to 10 do
printfn "%d" num
如下的代码也 OK:
for num in 1..10 do
printfn "%d" num
for语句很流程,使用时候这点是很重要的。
不过如果要写求解从1到10的和的代码,for语句就不行了。当然,这是在不使用ref或者mutable的情况下。