HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Ruby günlüğü - gün 7

Daha önce söylemiştim, Ruby case-sensitive bir dildir. Hemde Ruby'de bu büyük-küçük harf olayı arka planda çok farklı anlamlar doğurabiliyor. Şöyle görelim:

ruby-and-constants

Pi = 2 dedik ve ekrana bastırdı, daha sonra Pi = 200 dedik, yine ekrana bastırdı ama bi uyarı verdi already initialized constant Pi yani demek oluyor ki, "eyy yazılımcı daha önceden Pi sabitine başka bir değer vermiştin". Yazılımcı olarak bizde diyoruz ki "ama ben onun sabit olduğunu söylemedim ki sana?", Ruby de hemen yapıştırıyor cevabı "o zaman niye büyük harfle başladın arkadaşım!".

Aynı şeyi değişken için denediğimizde (x) herhangi bir hata almadık. Aslında ismi "sabit" olmasına rağmen onuda değiştirebiliyoruz, ama Ruby'den bu uyarıyı alarak. İnanmadık ve birde Xi sabiti oluşturduk, evet demek ki Ruby'de işler böyle yürüyormuş.

Bir değişken tanımlamasında, ilk harfi büyük yaparsak, o artık bir değişken türü olan "sabitler"e dahil oluyor. Daha önce sınıflarıda böyle tanımladığımızı hatırlayın! Baş harfleri büyüktü. Sınıflarda, programın sabitleri sayılabilir.

Text ve Stringler

Şimdi Ruby'ye dönmeden önce, söylemek isterim ki, daha önce okuduğum bir Python kitabında String konusu tam 200 sayfa boyunca anlatılmıştı. Kimi programcılar bir programlama dilinin gücünü, String marifetleri ile ölçer hatta.

Program içerinde string kullanmanın birçok yolu var, ancak çoklu satırda string kullanımı için Python'da 3 tane çift tırnak kullanıyorduk açılış ve kapanış için. Ruby'de ise bunu %q ile yapmaktayız, bir nevi kaçış ifadesi.

x = %q{ilk satir
ikinci satir
ucuncu satir
}
puts x

Burada %q'nun kaçınılmaz olduğunu bilmemiz gerekir, bunu kullanmalıyız ancak { } işaretçileri tamamen bizim isteğimize kalmış. Açılış ve kapanışı ifade eden herhangi başka birşey de kullanılabilir.

x = %q*ilk satir
ikinci satir
ucuncu satir
*
puts x

veya

x = %q[ilk satir
ikinci satir
ucuncu satir
]
puts x

veya

x = %q+ilk satir
ikinci satir
ucuncu satir
+
puts x

Artık nasıl hoşunuza giderse. Burada dikkat edilmesi gereken şey şu, açılış ve kapanış için yazıda kullanmayacağız bir karakter seçmeniz! Bu çok önemli, yoksa Ruby doğal olarak sizin nerede bu string dizisiniz kapattığınız anlayamaz, o da şöyle ki;

x = %q+ilk satir
ikinci satir+
ucuncu satir
+
puts x

Doğal olarak hata verecektir. %q'ya alternatif olarak birde <<herhangi_birsey var. Kullanım aynı;

x = <<serhat_iyi_cocuktur
ilk satir
ikinci satir
ucuncu satir
serhat_iyi_cocuktur
puts x

String Karşılaştırma

Stringleri de rakamlarda olduğu gibi < ve > gibi ifadelerle karşılaştırabiliyoruz. Peki neye göre yapılıyor bu karşılaştırma? ASCII değerlerine göre. Bir stringin ASCII değerini görmek için başına ? koymamız yeterli.

Interpolation

En kısa tabiriyle, string içine ifade gömme işlemine Ruby'de interpolation deniyor. Şu vakte kadar yazdığımız programlarda, değişkenleri tanımladık, çeşitli işlemler yaptırdık ve ekrana bastırdık. Ama günü-birlik kod yazmaktan öte geçmedik, yazdığımız kod kullanıcı dostu değildi ve tam olarak işlerin nasıl yürüdüğünü anlamak güçtü. Şimdi bu sorunu çözelim.

x = 20 ve y = 30 olsun. Bunları tanımladık, ekrana da 20 + 30 = 50 yazdırmak istiyoruz. Şuana kadar öğrendiklerimizle bunu nasıl yaparız ?

x = 20
y = 30
print x,"+",y, " = ", x+y

Kötü kod yazmaya en güzel örnek oldu sanırım. Burada bir virgülün yanlış yazılması veya bir " işaretinin eksik olması hata verdirecek.

Tabi ki tek çare bu değil, rakamları stringe çeviripte kullanada bilirdik. O da oldukça zahmetli ;

x = 10
y = 20
puts x.to_s + " + " + y.to_s + " = " + (x + y).to_s

Oysa ki Ruby'de şöyle güzel imkanlar var;

x = 20
y = 30
puts "#{x}+#{y} = #{x+y}"

Bu örnekte integerları ve aritmetik ifadeyi string içine interpolate ettik. Stringleri - string içine de interpolate edebiliyoruz:

x = "kedi"
puts "#{x} canını senin!"

Akıllıca bir örnek vardı kitapta, paylaşayım;

x = "This is a #{"bad " * 5}world"
puts x

Başarılar.


Share this post!


Blog Comments powered by Disqus.