Elm 记录
Elm中的记录数据结构可用于将数据表示为键值对。
记录中的数据元素称为字段。
记录可用于组织相关数据,以便轻松访问和更新数据。Elm 记录类似于 JavaScript 中的对象。
定义记录
使用以下语法定义记录-
语法
record_name = {fieldname1 = value1, fieldname2 = value2....fieldnameN = valueN}
一条记录可以存储多种类型的数据。记录中的字段名称必须符合命名Elm标识符的一般规则。
访问记录值
使用以下语法访问记录中的各个字段。
语法
record_name.fieldname
要么
.fieldname record_name
示例
在Elm REPL中尝试以下操作-
> website= {name="F2ER",rating=4.5} { name = "F2ER", rating = 4.5 } : { name : String, rating : Float } > website.name "F2ER" : String > .rating website 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 >
现在,如果您忘记键入位置和年龄,该语句将返回一个函数,该函数具有用于位置和年龄字段的输入参数。
> 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