![]() Önceki |
![]() İçindekiler |
![]() Sonraki |
| Ruby Kullanıcı Kılavuzu | Dizgiler (Strings) |
Ruby'de karakter dizgilerine nümerik bir veriymiş gibi davranabilirsiniz. Bir dizgi çift ("...") ta da tek ('...') tırnaklı olabilir.
ruby> "abc" "abc" ruby> 'abc' "abc" |
gurgenı durumlarda çift ve tek tırnak farklı işlevler görür. Çift tırnaklı bir dizgi \'yı takiben gelen karakteri göstermez ve gömülü ifadeleri #{} çalıştırmaya izin verir. Tek tırnaklı dizgi'ler buna izin vermez: ne görürsen onu alırsın. Örneğin:
ruby> print "a\nb\nc","\n"
a
b
c
nil
ruby> print 'a\nb\n',"\n"
a\nb\nc
nil
ruby> "\n"
"\n"
ruby> '\n'
"\\n"
ruby> "\001"
"\001"
ruby> '\001'
"\\001"
ruby> "abcd #{5*3} efg"
"abcd 15 efg"
ruby> var = " abc "
" abc "
ruby> "1234#{var}5678"
"1234 abc 5678" |
Ruby'nin dizgi işlemleri C'ye kıyasla daha esnek ve şıktır.Örneğin + ile iki dizgiyi birleştirebilirsiniz ya da * ile bir dizgiyi birçok kez tekrar ettirebirsiniz:
ruby> "foo" + "bar" "foobar" ruby> "foo" * 2 "foofoo" |
C'de dizgileri birleştirme işi, kesin bellek yönetimi nedeniyle oldukça yakışıksızdır:
char *s = malloc(strlen(s1)+strlen(s2)+1); strcpy(s, s1); strcat(s, s2); /* ... */ free(s); |
Ruby kullandığımız için dizgilere ayrılan herhangi bir alanı işgal etmemize gerek yok. Bellek yönetimi açısından tamamen özgürüz.
Aşağıda dizgilerle yapabileceğiniz birkaç örnek var:
Birleştirme:
ruby> word = "fo" + "o" "foo" |
Tekrarlatma:
ruby> word = word * 2 "foofoo" |
Karakterleri seçmek (ruby'de karakterlerin tamsayı olduğuna dikkat edelim):
ruby> word[0] 102 # 102 is ASCII code of `f' ruby> word[-1] 111 # 111 is ASCII code of `o' |
(Negatif ofset, başlangıç yerine dizginin sonundan okumaya başlar.)
Dizgi içinden karakter kümesi ayırmak:
ruby> herb = "parsley" "parsley" ruby> herb[0,1] "p" ruby> herb[-2,2] "ey" ruby> herb[0..3] "pars" ruby> herb[-5..-2] "rsle" |
Eşitlik kontrolü yapmak
ruby> "foo" == "foo" true ruby> "foo" == "bar" false |
Not: Ruby 1.0'da sonuçlar büyük harfle belirtiliyordu; örneğin TRUE.
Şimdi bu özelliklerin gurgenılarını hayata geçirelim: Bulmacamız bir "kelimeyi bil" bulmacası ama sanırım "puzzle" kelimesi fazla mütevazi oldu ^o~
# tahmin.rb olarak kaydedin
kelimeler = ['kestane', 'gurgen', 'palamut']
gizli_kelime = kelimeler[rand(3)]
print "tahmin? "
while tahmin = STDIN.gets
tahmin.chop!
if tahmin == gizli_kelime
print "Kazandiniz!\n"
break
else
print "Uzgunum, kaybettiniz.\n"
end
print "tahmin? "
end
print "Kelime: ", gizli_kelime, ".\n" |
Şimdilik kodun detayları hakkında fazla kafa yormayalım. Aşağıda programın nasıl çalışması gerektiği görülüyor:
% ruby tahmin.rb tahmin? kestane Uzgunum, kaybettiniz. tahmin? palamut Uzgunum, kaybettiniz. tahmin? ^D Kelime: gurgen. |
(1/3 olasılığa karşı biraz daha iyi yapmalıydım..).
![]() Önceki |
![]() İçindekiler |
![]() Sonraki |