F#入门-第二章 F#基础-第十一节 mutable关键字

    我们已介绍过在F#中变量的值是不可以被修改的。这里介绍如果使用mutable关键字,被绑定的值的变量就可以被修改了。
    使用mutable关键字声明变量后,使用<-可以修改变量的值。
    但是,修改后的值与修改前的值的数据类型必须相同。

mutable关键字的使用 
> let mutable a = 1;;
val mutable a : int
> a;;
val it : int = 1
> a <- 10;;
val it : unit = ()
> a;;
val it : int = 10


    引用类型与mutable的区别在于,引用类型针对的是变量本身,而mutalbe只针对值。这个区别可以从以下程序中看出来。

引用类型与mutable变量
> let a = ref 1 in let b = a in begin b:=2;!a;end;;
val it : int = 2
> let mutable a = 1 in let mutable b = a in begin b<-2;a end;;
val it : int = 1
> ref 1;;
val it : int ref = {contents = 1;}
> mutable 1;;
  mutable 1;;   stdin(30,1): error FS0010: Unexpected keyword 'mutable' in definition



    实际上,引用类型可以理解为包含一个 mutable 字段(contents)的记录类型。
    (F#的库中定义了几个带运算符的供访问用的记录类型.后文详细介绍。)

posted @ 2010-10-03 22:03  至尊无上  阅读(609)  评论(0)    收藏  举报