Ders 5 - Scala Değişkenler

4 Haz 2016 · 4 dk okuma süresi

Değişkenler değer depolamak için hafızada yer ayırmaktan başka bir şey değildir. Bu demek oluyor ki, siz değişken oluşturduğunuzda hafızada boş yer ayırıyorsunuz.

Değişkenin tipine bağlı olarak, derleyici hafızada yer ayırır(allocates) ve bu ayrılan yerde ne depolanabilir diye karar verir. Bu nedenle değişkenlere farklı veri tipi belirterek, bu değişkenlerin içerisine tamsayı, ondalıklı sayı veya karakter depolayabilirsiniz.

Değişken Bildirimi

Scala farklı şekillerde değişken bildirimi yapmanıza olanak sağlar. İsterseniz değişken(varriable) isterseniz sabit(constant) olarak tanımlayabilirsiniz. Aşağıdaki örnekte var anahtar kelimesi kullanılarak tanımlanmış değişken görüyorsunuz:

var myVar : String = "Foo"

Buradaki myVar ismindeki değişken val anahtar kelimesi ile tanımlanmıştır. Bu demek oluyor ki değişkenin içindeki değer değiştirilebilir. Bu tür değişkenlere mutable(değişken) ismini veriyoruz. Aşağıdaki örnekte ise ‘val’ anahtar kelimesi kullanılarak tanımlanmış değişken görüyoruz:

val myVal : String = "Foo"

Buradaki ‘myVal’ ismindeki değişken val anahtar kelimesi kullanılarak tanımlanmıştır.Bu da demek oluyor ki değişkenin değeri sabittir, değişmez. Bu tür değişkenlere immutable(değişmez-sabit) ismini veriyoruz.

Değişken Veri Tipleri:

Değişkenin tipi, değişken isimlerinden sonra, eşittir işaretinden ise önce belirtilir. Herhangi bir Scala değişkenin tipini aşağıda gösterildiği gibi veri tipini belirterek tanımlayabilirsiniz:

var or val VariableName : DataType [= Initial Value]

Eğer herhangi bir başlangıç değeri atamak istemiyorsanız, aşağıdaki şekildeki gibi de tanımlama yapılabilir:

var myVar :Int;
val myVal :String;

Değişken Tipi Algılama (Variable Type Inference):

Değişken tanımlaması yaparken eğer başlangıç değeri giriyorsanız, Scala derleyicisi atanan değere dayanarak değişkenin tipini otomatik olarak belirleyebilir. Buna ‘variable type inference’ diyoruz. Ben bunu Türkçeye ‘değişken tipi algılama’ olarak çevirdim(!). Bu değişken tipi algılaması sayesinde değişken bildirimlerini bu şekilde yapabilirsiniz:

var myVar = 10;
val myVal = "Hello, Scala!";

Burada varsayılan olarak ‘myVar’ değişkeni Int, ‘myVal’ değişkeni ise String tipinde olacaktır.

Çoklu Atama (Multiple assignments):

Scala çoklu atamayı destekler. Eğer kod bloğu veya metot Tuple(demet) döndürüyorsa, Tuple ‘val’ değişkenine atanabilir. [ Not: Tuple konusu daha sonraki derslerde göreceğiz.]

val (myVar1: Int, myVar2: String) = Pair(40, "Foo")

Ayrıca üstte gördüğümüz tip algılaması(type inferencer) sayesinde bunu aşağıdaki şekilde de tanımlayabiliriz:

val (myVar1, myVar2) = Pair(40, "Foo")

Değişken Türleri (Variable Types):

Scala değişkenlerin kullanıldığı alana bağlı olarak 3 farklı kapsama sahip olabilir. Bu değişken kapsamları ise alanlar(fields), metot parametreleri(method parameters) ve yerel değişkenlerdir(local variables). Aşağıda her kapsam hakkında açıklamalar yapılmıştır:

Alanlar (Fields):

Alanlar örneğin bir butonun üstünde yazan yazı veya butonun genişliği hatta butonun rengidir. Yani nesneye ait özelliklere biz Field diyoruz. Alt tarafta Field veya alan demek yerine ‘özellik’ olarak bahsedeceğim.

Özellikler, nesnelere(object - obje) ait değişkenlerdir. Özellikler, nesnenin içerisindeki her metottan erişilebilir. Ayrıca özelliklere, özellikler tanımlanırken kullanılan erişim belirleyicisine göre nesnenin dışından da erişilebilir. Nesne özellikleri mutable(değişken) veya immutable(sabit) olarak iki türde olabilir ve ‘var’ veya ‘val’ anahtar kelimeleri kullanılarak tanımlanabilir.

Metot Parametresi (Method Parameters):

Metot parametreleri metot çağrıldığında metodun içine değer göndermek amacıyla kullanılan değişkenlerdir. Metot parametreleri sadece metodun içerisinden erişilebilir fakat fonksiyonun parametresine nesneyi referans olarak gönderirseniz dışarıdan da erişilebilir olma durumu söz konusudur. Metot parametreleri daima mutable(değişken) türdedirler ve ‘var’ anahtar kelimesi ile tanımlanırlar.

Yerel Değişkenler (Local Variables):

Yerel değişkenler metodun içerisinde tanımlanan değişkenlerdir. Yerel değişkenler sadece metodun içerisinden erişilebilir fakat oluşturduğunuz nesne metodun içinden Return ifadesi ile döndürülür ise dışarıdan erişilmiş olur. Yerel değişkenler mutable(değişken) veya immutable(sabit) olarak her iki tipte de olabilir böylece var veya val anahtar kelimelerini kullanarak tanımlayabilirsiniz.