27 Ekim 2010 Çarşamba

Scala Giriş – 3

Dersi http://www.mediafire.com/?a5r51l8281ayqaw burdan PDF olarak indirebilirsiniz.

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

Hiç yorum yok:

Yorum Gönder