Elm - 記錄



Elm 中的記錄資料結構可以用來表示鍵值對形式的資料。記錄可以用來組織相關資料,以便於訪問和更新資料。Elm 記錄類似於 JavaScript 中的物件。記錄中的資料元素稱為欄位。

定義記錄

使用以下語法定義記錄:

語法

record_name = {fieldname1 = value1, fieldname2 = value2....fieldnameN = valueN}

記錄可以儲存多種型別的資料。記錄中的欄位名必須符合 Elm 識別符號命名的通用規則。

訪問記錄值

使用以下語法訪問記錄中的各個欄位。

語法

record_name.fieldname

.fieldname record_name

示例

在 Elm REPL 中嘗試以下操作:

> company = {name="TutorialsPoint",rating=4.5}
{ name = "TutorialsPoint", rating = 4.5 } : { name : String, rating : Float }
> company.name
"TutorialsPoint" : String
> .rating company
4.5 : Float

將記錄與列表一起使用

記錄可以儲存在列表中。記錄的所有欄位值都應該具有相同的型別。

語法

list_name = [ {field_name1 = value1},{field_name1 = value2}]

list_name = [record_name1, record_name2, record_name3....record_nameN]

示例

在 Elm REPL 中嘗試以下操作:

> [{name = "Mohtashim"},{name = "kannan"}]
[{ name = "Mohtashim" },{ name = "kannan" }] : List { name : String }
> record1 = {name = "FirstRecord"}
{ name = "FirstRecord" } : { name : String }
> record2 = {name = "SecondRecord"}
{ name = "SecondRecord" } : { name : String }
> recordList = [record1,record2]
[{ name = "FirstRecord" },{ name = "SecondRecord" }] : List { name : String }

更新記錄

Elm 中的記錄是不可變的。更新記錄時,會返回一個包含更新值的新記錄。在更新記錄時,欄位可以容納不同型別的值。

語法

{record_name | field_name1 = new_value1, field_name2 = new_value2,field_name3 = new_value3....field_nameN = new_valueN}

示例

在 Elm REPL 中嘗試以下操作:

> record1 = {name="FirstRecord"}
{ name = "FirstRecord" } : { name : String }
> record1_updated = {record1 | name = "FirstRecordUpdate"}
{ name = "FirstRecordUpdate" } : { name : String }
> record1
{ name = "FirstRecord" } : { name : String }
> record1 == record1_updated
False : Bool

示例

以下示例更新了記錄的多個欄位。在 Elm REPL 中嘗試以下操作:

> record3 = {a = 1,b = 2,c = 3,d = 4,e = 5}
{ a = 1, b = 2, c = 3, d = 4, e = 5 }
: { a : number, b : number1, c : number2, d : number3, e : number4 }
> record4 = {record3 | d=400 ,e=500}
{ a = 1, b = 2, c = 3, d = 400, e = 500 }
: { a : number2, b : number3, c : number4, d : number, e : number1 }
>

類型別名

類型別名定義了記錄的模式。換句話說,類型別名定義了記錄可以儲存哪些欄位以及這些欄位可以儲存哪種型別的值。因此,程式設計師在賦值時不會犯遺漏任何特定屬性的錯誤。

語法

type alias alias_name = {field_name1:data_type,field_name2:data_type,....field_nameN:data_type}

示例

在 Elm REPL 中執行以下操作:

> type alias Developer = { name:String,location:String,age:Int}
> dev1 = Developer "kannan" "Mumbai" 20
{ name = "kannan", location = "Mumbai", age = 20 } : Repl.Developer
> dev2 = Developer "mohtashim" "hyderabad" 20
{ name = "mohtashim", location = "hyderabad", age = 20 } : Repl.Developer
>

如果您忘記輸入 location 和 age,則語句將返回一個函式,該函式具有 location 和 age 欄位的輸入引數。

> dev3 = Developer "Bhagavati"
<function> : String -> Int -> Repl.Developer
We can invoke the function as shown below and pass to it the values for location and age fields.
> dev3 "Pune" 25
{ name = "Bhagavati", location = "Pune", age = 25 } : Repl.Developer
廣告