Karaağaç - Tuples
Zaman zaman, çeşitli türlerde bir dizi değerin depolanmasına ihtiyaç duyulabilir. Elm bize bu amaca hizmet eden tuple adı verilen bir veri yapısı verir.
Bir demet, heterojen bir değerler koleksiyonunu temsil eder. Başka bir deyişle, demetler, farklı türlerde birden çok alanın depolanmasını sağlar. Bir demet, sabit sayıda değer depolar. Tuples, bir işlevden farklı türlerde birden çok değer döndürmek istediğinizde kullanışlıdır. Bu veri yapıları karaağaçtaki diğer türler gibi değişmezdir.
Sözdizimi
(data1,data2)
Aşağıda basit bir örnek gösterilmektedir -
> ("TuotrialsPoint",5,True,"Hyderabad")
("TuotrialsPoint",5,True,"Hyderabad") : ( String, number, Bool, String )
Sonraki bölümlerimizde farklı tuple işlemlerini öğreneceğiz.
ilk
Bu işlem, bir demetten ilk değeri çıkarır.
Sözdizimi
Tuple.first tuple_name
> Tuple.first
<function> : ( a1, a2 ) -> a1
İllüstrasyon
> Tuple.first (10,"hello")
10 : number
ikinci
second tuple işlemi, bir demetten ikinci değeri çıkarır.
Sözdizimi
Tuple.second tuple_name
> Tuple.second
<function> : ( a1, a2 ) -> a2
İllüstrasyon
> Tuple.second (10,"hello")
"hello" : String
Tuple listesi
Bir Liste, Tuple'ları saklayabilir. Bir liste içinde demetler kullanılıyorsa, hepsinin aynı veri türünde olduğundan ve aynı sayıda parametreye sahip olduğundan emin olun.
İllüstrasyon
> [("hello",20),("world",30)]
[("hello",20),("world",30)] : List ( String, number )
İşlevli Tuple
Bir işlev tuple döndürebilir. Ek olarak, tuplelar fonksiyonlara parametre olarak geçirilebilir.
Resim 1
Aşağıdaki örnek bir fn_checkEven işlevini tanımlar. Bu işlev bir tamsayı değerini parametre olarak kabul eder ve bir demet döndürür.
> 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 )
>
Resim 2
Aşağıdaki, bir tuple'ı bir işleve parametre olarak iletir.
> fn_add (a,b) = \
| a+b
<function> : ( number, number ) -> number
> fn_add (10,20)
30 : number
Fn_add işlevi 2 sayısal değer içeren bir demet alır ve bunların toplamını döndürür.
Şeklini bozma
Yıkım, bir demeti bireysel değerlere ayırmayı içerir. Üç veya daha fazla öğeli bir demetteki tek tek değerlere erişmek için yıkımı kullanırız. Burada, bir demetteki her bir değeri farklı değişkenlere atıyoruz. _ One kullanmak, göz ardı edilecek veya atlanacak değerler için yer tutucular tanımlayabilir.
İllüstrasyon
> (first,_,_) = (10,20,30)
10 : number
> first
10 : number
İllüstrasyon
Bu örnekte, yok etmek için let..in blok sözdizimini kullanacağız. Let bloğu değişkenleri içerir ve in bloğu değerlendirilmesi gereken ifadeleri ve döndürülmesi gereken değeri içerir.
> t1 = (10,20,30)
(10,20,30) : ( number, number1, number2 )
> let \
(a,b,c) = t1 \
in\
a + b +c
60 : number
Let cümlesinde abc değişkenlerini bildiriyoruz ve in cümlesini kullanarak onlara erişiyoruz.