İçeriğe atla

Ruby/Alternatif String Yazımları

Vikikitap, özgür kütüphane

←Stringler | here Dokümanlar→

Ruby'de string değerleri ifade etmek için birden fazla yöntem vardır. Bunların çoğu Perl programcılarına tanıdık gelecektir.

Bu alternatif yöntemler:

  • Tek tırnakları %q operatörü ile ifade: %q(abc) ve 'abc' aynıdır
  • Çift tırnakları %Q operatörü ile ifade: %Q(abc's) ve "abc's" aynıdır


Tek tırnak alternatifi

[düzenle]

Diyelim aşağıdaki path değerini ifade için tek tırnak kullanacağız.

puts 'c:\bus schedules\napolean\the portland bus schedule.txt'

Bu kod şu çıktıyı verecektir:

c:\bus schedules\napolean\the portland bus schedule.txt

Tek tırnak içinde yazım, \b, \n, ve \t karakter çiftlerinin escape sequence olarak algılanmamasını sağlar (gerçi aynısını Wikibooks'un kod renklendirmesi için söyleyemeyiz).


Şimdi şu string değer yazımını düşünelim:

puts 'c:\napolean\'s bus schedules\tomorrow\'s bus schedule.txt'

Bununçıktısı:

c:\napolean's bus schedules\tomorrow's bus schedule.txt

Apostrofları ifade için yapmamız gerekenler kodumuzu daha zor okunabilir ve ne çıktı vereceğinde zorlanabilecğimiz bir hale getirdi.

Şanslıyız ki Ruby'de daha iyi bir yol var. %q operatörünü tek tırnak kurallarına uygulayabilirsiniz, ve kendi sınırlayıcınızı seçebilirsiniz. Bu sınırlayıcı string değer girişinin başını ve sonunu belirler.

puts %q!c:\napolean's documents\tomorrow's bus schedule.txt!
puts %q/c:\napolean's documents\tomorrow's bus schedule.txt/
puts %q^c:\napolean's documents\tomorrow's bus schedule.txt^
puts %q(c:\napolean's documents\tomorrow's bus schedule.txt)
puts %q{c:\napolean's documents\tomorrow's bus schedule.txt}
puts %q<c:\napolean's documents\tomorrow's bus schedule.txt>

Tüm satırlar aynı metin çıktısını verir:

c:\napolean's documents\tomorrow's bus schedule.txt

Örneklerin dışındaki istediğiniz herhangi bir noktalama işaretini sınırlayıcı olarak belirleyebilirsiniz.

Tabi ki bu işaret string değer içinde kullanılmıyor olmalıdır, öyle olursa onu da escape etmeniz gerekir.

puts %q#c:\napolean's documents\tomorrow's \#9 bus schedule.txt#

Metni sınırlamak için eşleşen parantezler kullanırsanız, içeride kullanacağınız eşleşen parantezleri escape etmeniz gerekmez.

puts %q(c:\napolean's documents\the (bus) schedule.txt)
puts %q{c:\napolean's documents\the {bus} schedule.txt}
puts %q<c:\napolean's documents\the <bus> schedule.txt>


Çift tırnak alternatifi

[düzenle]

%Q operatörü (Q büyük harf) string değerlerinizi çift tırnak kuralları kullanarak ifade etmenizi sağlar, fakat sınırlayıcı olarak çift tırnak kullanılmaz. Aynı %q operatörü gibi kullanılır.

 print %Q^Yaz:\tMerhaba dünya\n\tMerhaba dünya\n^
 print %Q(Yaz:\tMerhaba dünya\n\tMerhaba dünya\n)


Aynı çift tırnak kullanır gibi bu şekil string değer ifadelerinde de enterpolasyon yapabilirsiniz.

isim = 'Charlie Brown'
 
puts %Q!"Merhaba" de, #{isim}.!
puts %Q/"4 artı 5" kaç yapar? Cevap: #{4+5}/