Ruby/Alternatif String Yazımları
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}/