Scala 3 - Demetler, Sets ve Maps

Demetler ( Tuples )

Demetlerde listeler gibi değişmezdir fakat burda listelerden şöyle bi farkı var.Listelerde sabit bir tipte oluştururken tüm listeyi yani List[Int] mesela, demetlerdeyse böyle bir zorunluluğumuz yok. Demetleri Tuple[Int,String] vs. şeklinde oluşturabiliriz. Şimdi hemen bir demet nasıl oluşturulur bakalım.

val abukSubukSeyler = ("Cem","1",3,89.2,"e") // Gördüğünüz gibi demet oluşturmak bu kadar basit Bunu Tuple[String,String,Int,Double,Char] şeklinde düşünün.

Demetimizden herhangi bir öğeye ulaşmak istersek.

val abukSubukSeyler = ("Cem","1",3,89.2,"e")
println(abukSubukSeyler._4)

Bize 89.2 sonucunu döndürür.Sebepte demetlerde sıra 1 den başlıyor , listeler gibi 0 dan değil.Bunu demet_adı._N şeklinde düşünebilirsiniz.N ' inci eleman. Hem burda şöyle Bir şey de düşünebilirsiniz.Neden listelerdeki gibi istediğimiz sıradaki elemanı demet_adı(eleman_sırası) şeklinde kullanmıyoruz diye.Burdaki neden de Listelerde tek tip eleman var fakat demetlerde birden fazla değişik eleman olduğu için biraz daha değişik biçimde ulaşıyoruz. Demetler için Listelerin metodlarını geçerlidir , kullanabiliriz.

Sets ve Maps

Sets :Sets(kümeler) hem değiştirilebilir(mutable) , hemde değişmez olarak(immutable) olarak kullanabilir.Bunları Arrayler mutable ve Listeler (immutable) olarak düşünebilirsiniz. Değişmez kümeler oluşturmak istersek

var immutableSet = Set("Cem",2,3,4,5) // kümemizi oluşturduk.
immutableSet += "scala" // scala adlı yeni öğe ekledik.Bunu immutableSet = immutableSet + scala şeklindede yapabilirdik.
println(immutableSet.last) // son öğesini ekrana yazdır dedik.Tabi bunu yaptıktan sonra last metodunu silip tüm kümeye bakın.

Değişebilir küme oluşturmak istersek.

Tek yapmamız gereken en üste import scala.collection.mutable.Set 'i eklememiz lazım.

var mutableSet = Set("Cem",2,3,4,5)
immutableSet += "scala"
println(immutableSet.last) // bu sefer sonuca bakın ve ikisi arasındaki fakrı görün.

Şimdi bu mutable ve immutable Setler arasındaki fark nedir açıklayalım.İlk setimizde dikkat ettiyseniz import ile Set'i eklemedik.Zaten compiler(derleyici) bunu otomatik olarak

import scala.collection.immutable.Set olarak algılıyor.Bizim eklememize gerek yok.

Ve burda iki Setin de “ + “ metoduna göre davranışları farklı.Nasıl derseniz? İmmutable Setlerde sadece mevcut Set'e öğeyi ekliyor.Mutable Setlerdeyse Öğeyi ekleyip yeni bir Set döndürüyor.

Maps (Mapler)

Mapler de , Setler gibi mutable ve immutable olarak oluşturulabiliyor. Şimdi bir immutable Map oluşturmak istersek

val ilkMap = Map(1->"cem",2->"Cem",5->1,3->”Ezgi”)
println(ilkMap(5)) // 5 anahtarına sahip öğeyi yazdır.

Burda 1 , 2 ,5 diye giden sıra Keys(Anahtarlar) oluyor.”cem”,”Cem”,1,”Ezgi” olan sıraysa Values(Değerler) oluyor. Mutable bir Map oluşturmak istersekte gene en başa import scala.collection.mutable.Map ekliyoruz

val ikinciMap = Map[Int,String]()
ikinciMap += (1 -> "cem")
ikinciMap += (2 -> "Ecem")
ikinciMap += (11 ->"Özgür")
println(ikinciMap(11)) //şeklindede oluşturabiliriz.

Fakat burda fark Keylerin Int tipinde , Values larınsa String tipinde olcağını belirtiyoruz.Mesela 11 inci keyin değerini tırnak içine almadan 5 yapın ve sonucu görün.

Dosya'dan Satır Okuma

İlk önce import scala.io.Source diyerek satır okumak için Source classımızı ekliyoruz.

val dosya = "/home/dyrnade/cem.log"
if (dosya.length > 0) {
for (line <- Source.fromFile(dosya).getLines){
println(line) }
}else{
Console.err.println("HATA! Lütfen Dosya Adını Doğru Yazınız..!")
}

Burda ilk dosya değişkenini oluşturup Başlangıç Dizininde oluşturduğum “cem.log” adlı log dosyasının yolunu belirttim.Daha sonra if diyip dosya.length dedik ve dosyayı açtık.Daha sonra for (line <- Source.fromFile(dosya).getLines) diyerek line adlı değişkene Source.fromFile(dosya).getLines diyerek açtığımız dosyayı Source nesnesine bağlayıp getLines diyerek satırları okuduk. println(line) diyerekte okuduğumuz satırları yazdırdık.Sonra da

else{
Console.err.println("HATA! Lütfen Dosya Adını Doğru Yazınız..!")
}

Eğer bi hata varsa HATA! Lütfen Dosya Adını veya Yolunu Doğru Yazınız..! diye ekrana çıktı vermesini sağladık

Tarih:
Hit: 1881
Yazar: dyrnade



Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.