Ruby/Stringler
←Merhaba Dünya | Alternatif String Yazımları→
Python, Java, ve .NET Framework gibi Ruby de bir String sınıfına sahiptir.
String değerler
düzenleBir Ruby programında bir string değer ifade etmenin bir yolu tek ya da çift tırnak içinde yazmaktır, buna string literal denir. Daha önce bunu Merhaba Dünya programımızda yapmıştık. Programımızda kısa bir güncelleme yaparak hem tek hem de çift tırnak ile ifade etmeyi görelim.
puts "Merhaba Dünya!"
puts 'Merhaba Dünya!'
Hem tek hem de çift tırnak içinde string değer ifade etmek Perl diline benzer, fakat C ve Java gibi çift tırnağı string değer ifade ederken ve tek tırnağı tek karakter ifade ederken kullanan dillerden farklıdır.
Peki Ruby'de tek ve çift tırnak arasında ne fark var? Yukarıdaki kodda bir fark yok, ama aşağıdaki koda bir bakalım:
puts "Eda'nın pasta dükkanı"
puts 'Eda\'nın pasta dükkanı'
"Eda'nın
" kelimesi apostrof (tek tırnak) içerdiği için ikinci satırda Ruby'nin string değer ifadesi bitmiş olarak algılamaması için önüne bir ters bölü koyarak tek tırnağın string değer içinde olduğunu belirtiyoruz. Ters bölü arkasından gelen tek tırnak yapısı escape sequence olarak bilinir.
Tek tırnaklar
düzenleTek tırnaklar sadece iki escape sequences içerebilir.
- \' – tek tırnak
- \\ – tek ters bölü
Bu ikisi dışında tek tırnak içinde olan tüm ters bölü ile başlayan şeyler olduğu gibi alınır.
Çift tırnaklar
düzenleÇift tırnak içinde tek tırnaktan çok daha fazla çeşit escape sequence kullanılabilir. Çift tırnak içinde ayrıca bir Ruby değişkeni değerini de yazdırmak mümkündür, buna enterpolasyon denir.
puts "Adınızı Giriniz : "
isim = gets.chomp
puts "Adınız : #{isim}"
Escape sequence'ler
düzenleAşağıda çift tırnak ifadeler içinde çok kullanılan escape sequence ifadeleri görülüyor.
- \" – çift tırnak
- \\ – tek backslash
- \a – bell/alert
- \b – backspace
- \r – carriage return
- \n – newline
- \s – space
- \t – tab tuşu
Bu örnek kodu deneyerek escape sequence'ler hakkında daha iyi bilgi sahibi olabilirsiniz.
puts "Merhaba\t\tdünya"
puts "Merhaba\b\b\b\b\bHoşçakal dünya"
puts "Merhaba\rBaşa dön, dünya"
puts "1. Merhaba\n2. dünya"
Sonuç:
$ çift_tırnaklar.rb Merhaba dünya MeHoşçakal dünya Başa dön, dünya 1. Merhaba 2. dünya
Dikkat ederseniz son satırdaki \n
alt satıra geçerken \r
kursörü satırın başına getirip eski yazının üstüne yazdı.
Bell karakteri, escape kodu \a
ile ifade edilir ve bir kontrol karakteri olarak bilinir. Alfabeden bir harf, bir noktalama işareti veya yazılı herhangi bir sembol ile gösterilmez. Bunun yerine terminal emülatöre istekte bulunarak (Microsoft Windows'da konsol olarak bilinir) kullanıcıya uyarı yapmasını talep eder. Buna karşılık nasıl davranacağı terminal emülatörüne kalmıştır, bu genellikle kısa bir beep sesidir. Bazı terminal emülatörleri kısa bir süre yanıp söner.
Terminal emülatörünüzün bell karakterini nasıl algıladığını test için aşağıdaki Ruby kodu deneyiniz.
puts "\aMerhaba dünya\a"
puts
düzenleŞimdiye kadar yazı çıktısı almak için puts
metodunu kullandık. Whenever puts
bir yazı çıktısı yazdığında arkasından yeni satıra geçer (sonuna newline ekler). Örneğin aşağıdaki kodu deneyin.
puts "tüm", "dünyaya", "merhaba", "de"
Sonuç:
$ ./merhaba.rb tüm dünyaya merhaba de
Aksine Ruby'de print
sadece siz belirtirseniz newline karakteri koyar. Örneğin aşağıdaki kodu deneyin. Burada newline karakterini print
'in argümanlarının en sonuncusu olarak verdik, böylece terminalde prompt yazıdan sonra alt satırda görünür.
print "tüm", "dünyaya", "merhaba", "de", "\n"
Sonuç:
$ ./merhaba.rb tümdünyayamerhabade
Aşağıdaki kod da aynı sonucu oluşturur, yani print
ve puts
deyimleri aslında her argüman için ayrı ayrı çalıştırılıyor.
print "tüm"
print "dünyaya"
print "merhaba"
print "de"
print "\n"