Elm - Tuple
Terkadang, mungkin ada kebutuhan untuk menyimpan kumpulan nilai dari berbagai jenis. Elm memberi kita struktur data yang disebut tuple yang melayani tujuan ini.
Sebuah tupel merepresentasikan kumpulan nilai yang heterogen. Dengan kata lain, tupel memungkinkan penyimpanan banyak bidang dengan tipe berbeda. Tupel menyimpan sejumlah nilai tetap. Tupel berguna saat Anda ingin mengembalikan beberapa nilai dengan tipe berbeda dari suatu fungsi. Struktur data ini tidak dapat diubah seperti tipe lainnya di elm.
Sintaksis
(data1,data2)
Contoh sederhana ditunjukkan di bawah ini -
> ("TuotrialsPoint",5,True,"Hyderabad")
("TuotrialsPoint",5,True,"Hyderabad") : ( String, number, Bool, String )
Di bagian selanjutnya, kita akan belajar tentang operasi tupel yang berbeda.
pertama
Operasi ini mengekstrak nilai pertama dari sebuah tupel.
Sintaksis
Tuple.first tuple_name
> Tuple.first
<function> : ( a1, a2 ) -> a1
Ilustrasi
> Tuple.first (10,"hello")
10 : number
kedua
Itu second Operasi tupel mengekstrak nilai kedua dari tupel.
Sintaksis
Tuple.second tuple_name
> Tuple.second
<function> : ( a1, a2 ) -> a2
Ilustrasi
> Tuple.second (10,"hello")
"hello" : String
Daftar tupel
Daftar A dapat menyimpan Tuple. Jika tupel digunakan di dalam daftar, pastikan semuanya memiliki tipe data yang sama dan memiliki jumlah parameter yang sama.
Ilustrasi
> [("hello",20),("world",30)]
[("hello",20),("world",30)] : List ( String, number )
Tuple dengan fungsi
Suatu fungsi dapat mengembalikan tupel. Selain itu, tupel dapat dikirimkan sebagai parameter ke fungsi.
Ilustrasi 1
Contoh berikut mendefinisikan fungsi fn_checkEven. Fungsi ini menerima nilai integer sebagai parameter dan mengembalikan tupel.
> fn_checkEven no = \
if no%2 == 0 then \
(True,"The no is Even")\
else \
(False,"No is not even")
<function> : Int -> ( Bool, String )
> fn_checkEven 10
(True,"The no is Even") : ( Bool, String )
> fn_checkEven 11
(False,"No is not even") : ( Bool, String )
>
Ilustrasi 2
Berikut ini melewati tupel sebagai parameter ke suatu fungsi.
> fn_add (a,b) = \
| a+b
<function> : ( number, number ) -> number
> fn_add (10,20)
30 : number
Fungsi fn_add mengambil tupel dengan 2 nilai numerik dan mengembalikan jumlahnya.
Merusak
Destrukturisasi melibatkan pemecahan tupel menjadi nilai-nilai individu. Untuk mengakses nilai individu dalam tupel dengan tiga atau lebih elemen, kami menggunakan destructuring. Di sini, kami menetapkan setiap nilai dalam tupel ke variabel yang berbeda. Menggunakan _ one dapat menentukan placeholder untuk nilai yang akan diabaikan atau dilewati.
Ilustrasi
> (first,_,_) = (10,20,30)
10 : number
> first
10 : number
Ilustrasi
Dalam contoh ini, kami akan menggunakan sintaks blok let..in untuk merusak. Blok let berisi variabel dan blok dalam berisi ekspresi yang harus dievaluasi dan nilai yang harus dikembalikan.
> t1 = (10,20,30)
(10,20,30) : ( number, number1, number2 )
> let \
(a,b,c) = t1 \
in\
a + b +c
60 : number
Kami mendeklarasikan variabel abc dalam klausa let dan mengaksesnya menggunakan dalam klausa.