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