Elm - Rekaman

Struktur data record di Elm dapat digunakan untuk merepresentasikan data sebagai key-value pair. Rekaman dapat digunakan untuk mengatur data terkait untuk memungkinkan akses mudah dan memperbarui data. Catatan Elm mirip dengan objek di JavaScript. Elemen data dalam rekaman dikenal sebagai bidang.

Mendefinisikan Record

Gunakan sintaks berikut untuk mendefinisikan record -

Sintaksis

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

Rekaman dapat menyimpan data dari berbagai jenis. Nama bidang dalam rekaman harus sesuai dengan aturan umum untuk penamaan pengenal Elm.

Mengakses nilai record

Gunakan sintaks berikut untuk mengakses bidang individu dalam sebuah rekaman.

Sintaksis

record_name.fieldname

ATAU

.fieldname record_name

Ilustrasi

Coba yang berikut ini di 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

Menggunakan Rekam dengan Daftar

Rekaman dapat disimpan di dalam daftar. Semua nilai bidang dari rekaman harus berjenis sama.

Sintaksis

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

ATAU

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

Ilustrasi

Coba yang berikut ini di 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 }

Perbarui Record

Rekor tidak dapat diubah di Elm. Saat rekaman diperbarui, rekaman baru dengan nilai yang diperbarui dikembalikan. Bidang dapat menyimpan nilai jenis yang berbeda saat memperbarui catatan.

Sintaksis

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

Ilustrasi

Coba yang berikut ini di 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

Ilustrasi

Contoh berikut memperbarui beberapa bidang catatan. Coba yang berikut ini di 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 }
>

Jenis alias

Alias ​​tipe mendefinisikan skema untuk sebuah record. Dengan kata lain, alias tipe menentukan bidang mana yang dapat disimpan rekaman dan tipe nilai yang dapat disimpan bidang ini. Oleh karena itu, programmer tidak akan membuat kesalahan dengan kehilangan atribut tertentu saat memberikan nilai.

Sintaksis

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

Ilustrasi

Jalankan yang berikut di 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
>

Sekarang jika Anda lupa mengetik lokasi dan usia, pernyataan tersebut mengembalikan fungsi, yang memiliki parameter masukan untuk bidang lokasi dan usia.

> 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