f#中的變數的值在宣告初始化後就不可以被修改了。
但如果想使用可變的變數時,用mutable關鍵字修飾變數就可以被修改了。
使用mutable關鍵字宣告變數後,使用<-可以修改變數的值。
下面我們來看一些例子。
// 定義乙個可變整形變數,初始值為1,改變值後為10
> letmutable num = 1;;
valmutable num : int = 1
>num;;
val it :int = 1
> num<- 10;;
val it :unit = ()
>num;;
val it :int = 10
// 這裡是乙個record(記錄),裡面的miles欄位為可變值
> typemutablecar = ;;
typemutablecar =
mutable與引用型別是有區別的,引用型別是針對變數本身,而mutable值只是針對值。
可以通過下面例子看出:
//引用變數
> letnum = ref 1
let b =num
b := 2
//這裡宣告乙個引用變數,然後賦值給b後,改變b值為2
val num :int ref =
val b :int ref =
>!num;;
val it :int = 2
//mutable變數
//這裡定義乙個mutable變數,然後賦值給mutable變數b,改變b的值為2
> letmutable num = 1
letmutable b = num
b<- 2;;
valmutable num : int = 1
valmutable b : int = 2
>num;;
val it :int = 1
實際上,引用型別可以理解為包含乙個mutable欄位(contents)的記錄型別。
關鍵字mutable小議
關鍵字mutable小議 內容 我們知道在用const修飾的類成員函式,這意味著什麼,從effective c 這本書上我們可以了解到,這裡存在兩個流行的概念 bitwise constness or physical constness 和logical constness.bitwise con...
mutable關鍵字解析
c 11引入mutable關鍵字,它是乙個型別修飾符,用來修飾成員變數或者是lambda函式,接下來分布來說明。當mutable用來修飾成員變數時,表明該成員變數屬於物件內部可變狀態,對外不可見。即使在const函式也可改變,不影響外部使用者對此const函式的邏輯語義。比如,基於mutex的執行緒...
c 中mutable關鍵字
mutalbe的中文意思是 可變的,易變的 跟constant 既c 中的const 是反義詞。在c 中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中。我們知道,如果類的成員函式不會改變物件的狀態,那麼這個成員函式一...