F 入門 第二章 F 基礎 第十五節 記錄

2021-09-30 04:44:31 字數 1409 閱讀 6019

前面已介紹過了列表、元組或陣列這些資料結構,除此之外,f#還有記錄這種資料結構。記錄表示幾個值的並列排放,具有每一種資料前加上名稱的這一特性。

雖然相當於c語言中的結構體,但是在f#中另外有方法單獨描述c語言中的結構體,關於這個請在「物件導向「一節中詳細解釋。

基本的記錄的寫法如下所示

記錄的定義

type 型別名 =

記錄的值的寫入

例如,以下為定義具有商品名和**欄位的juice記錄。

記錄型別的定義

type juice = ;;

這個型別的資料的定義如下所示。

記錄型別的值

let my = ;;

let dp = ;;

另外,可以使用現有資料定義新的資料。

寫法如下所示

利用現有記錄生成新的記錄

示例如下

利用現有記錄生成記錄

let ab = ;;

使用記錄型別的變數名.欄位名從記錄中讀取值。

從記錄中讀取值

> my.name;;

val it : string = "mellowyellow"

> ab.price;;

val it : int = 110

關於記錄有必須注意的地方,請看如下示例。

現有記錄與新的相同欄位名的記錄

type goods = ;;

let my_oyatu = ;;

這個goods記錄與剛才定義的juice型別有著相同欄位名。這時,my_oyatu不是juice型別,而變成了goods型別。也就是說,新定義的記錄的欄位名,與現有的記錄並不存在衝突。

如果考慮到這一點,使用記錄型別進行大規模開發就不困難了。如果意識到相同欄位名的記錄之間並不存在衝突,就可以大量使用記錄了。

記錄型別的值也是,基本上一旦定義好之後,就不能被改變了。但是加上mutable關鍵字之後,就可以改變值。這時,使用<-來改變值。

mutable記錄型別

type human = ;;

let nobita = ;;

let time_furosiki (x:human) = x.age <- x.age + 10;;

time_furosiki nobita;;

print_int nobita.age;;

這裡我們定義了乙個名字(name)不可變,年齡(age)可變的記錄型別-人(human)。並用「人」來定義nobita並賦值。然後定義time_furosiki函式將年齡加上10歲並返回,然後呼叫time_furosiki函式修改nobita的年齡,最後顯示nobita的年齡。

關於常州藍博紡織機械****的產品被常州藍博節能裝置****非法假冒的宣告

F 入門 第二章 F 基礎 第十五節 記錄

前面已介紹過了列表 元組或陣列這些資料結構,除此之外,f 還有記錄這種資料結構。記錄表示幾個值的並列排放,具有每一種資料型別前加上名稱的這一特性。雖然相當於c語言中的結構體,但是在f 中另外有方法單獨描述c語言中的結構體,關於這個請在 物件導向 一節中詳細解釋。基本的記錄的寫法如下所示 記錄的定義 ...

F 入門 第二章 F 基礎 第十三節 元組

元組是一些值的組合。元組中的值可以是任何資料型別。在list中,元素的個數是可變的,list內的元素必須是相同資料型別。在元組中,元素的個數是固定的,元組內的元素可以不是相同資料型別。使用元組的好處之一在於,可以將元組作為函式的返回值進行返回,從而可以方便地從乙個函式中返回多個值。元組的寫法為在 中...

F 入門 第二章 F 基礎 第十二節 列表

列表是資料的集合。f 的列表是線性列表的一種,單方向列表。單方向列表是基本的資料結構之一,一種攜帶指向下乙個元素的指標的資料結構。列表中的元素必須是相同資料型別。完全沒有元素的列表叫空列表,用來表示。另外,列表中的元素用 來分隔。列表 val it a list 1 val it int list ...