Ruby yorumlanan, dinamik, yansıtıcı, nesne yönelimli bir programlama dilidir. Yukihiro Matsumoto tarafından geliştirilen Ruby, sadelik ve üretkenliğe odaklanır. Zarif sözdizimi, geliştiricilerin kodu daha kolay okumasını ve yazmasını sağlar.
Bu kılavuzda, Ruby'de dizelerle çalışacağız.
Gereksinimler
Bu eğitimde gösterilen adımları gerçekleştirmek için aşağıdaki bileşenlere ihtiyacınız vardır:
- Düzgün yapılandırılmış bir Ubuntu sistemi. CloudSigma üzerinde kendi Ubuntu sunucunuzu yapılandırma hakkında daha fazla bilgi edinin.
- Tercihen sözdizimi vurgulamalı herhangi bir modern metin düzenleyici, örneğin, VS Code, Sublime Text, Atom, Brackets, Vim, vb.
Dize Veri Türü
Programlamada, bir dize her modern programlama dilinin desteklediği yaygın bir veri türüdür. Bir karakter dizisi ile karakterize edilir. Tüm karakter dizisi tek bir veri parçası olarak kabul edilir. Bir dize harfler, rakamlar ve özel karakterler/semboller içerebilir.
Saf bir nesne yönelimli programlama dili olan Ruby, dizeleri nesne olarak ele alır. Diğer birçok dilin aksine, Ruby'deki dizeler değiştirilebilirdir. Temel olarak, dize değeri yerinde değiştirilebilir.
Adım 1 – Dizeleri Oluşturma ve Yazdırma
Ruby'de dizeler tek tırnak ( ') veya çift tırnak ( ") içine alınır. Aşağıdakiler Ruby'de geçerli iki dizedir:
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
Konsol ekranına herhangi bir çıktı yazdırmak için Ruby, print yöntemiyle birlikte gelir:
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
Bunu uygulamaya koyma zamanı. Şu adla yeni bir Ruby dosyası oluşturun: practice.rb ve aşağıdaki kodları girin:
Kodu çalıştırın:
|
1 |
ruby practice.rb |
Beklendiği gibi, print komutu sağlanan dizeleri yazdırır. Dizeleri ayrı satırlara yazdırmak istiyorsak, bunun yerine puts kullanmak daha iyidir. Kodu güncelleyin:
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
Ardından, kodu tekrar çalıştırın:
|
1 |
ruby practice.rb |
Adım 2 – Dize Değişkenleri
Değişkenler, bilgisayar belleğinde bir değerin saklandığı belirli bir yere atıfta bulunan adlardır. İstediğimiz değeri değişkende saklayabilir ve daha sonra kullanabiliriz.
Ruby'de bir dize değişkeni bildirmek için değişken adını tanımlayın ve bir dize değeri atayın:
|
1 |
<değişken_adı> = <dize> |
Aşağıdaki kodu şu dosyanın içine yazın: practice.rb:
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
Kodu çalıştırın:
|
1 |
ruby practice.rb |
Burada:
- İki değişken tanımladık: first_half ve second_half, her birine bir dize değeri atanmıştır.
- The puts yöntemi değişkenlerin değerini yazdırır.
Adım 3 – Dize Birleştirme
Birleştirme yaparak, birden fazla dizeyi alıp yeni bir dize oluşturmak için bir araya getirebiliriz. Dize birleştirme, birleştirme operatörü ( +) ile gösterilir. Bu sembolün aritmetik işlemlerle çalışırken aynı zamanda toplama operatörü olduğunu unutmayın.
Şimdiye kadar bildirdiğimiz dizeler üzerinde dize birleştirmeyi gerçekleştirmeyi deneyelim:
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
Kodu çalıştırın:
|
1 |
ruby practice.rb |
Çıktının gösterdiği gibi, birleştirme dizelerin arasına herhangi bir ek karakter eklemez. Bu yüzden fox ve jumps birbirine bitişik yazılır. Bunu, şu ifadeden sonra boşluk bırakarak düzeltebiliriz: fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
Kodu çalıştırın:
|
1 |
ruby practice.rb |
Şimdi çıktı daha iyi görünüyor.
Dize birleştirme değişkenlerle de çalışır. Aşağıdaki örneğe göz atın:
|
1 2 |
first_half = "the quick brown fox " puts first_half + "jumps over the lazy dog" |
Kodu çalıştırın:
|
1 |
ruby practice.rb |
Bir sonraki örnek, uzun bir birleştirme zincirini göstermektedir:
|
1 2 3 |
username = "cloudsigma" fav_color = "mavi" puts "merhaba, " + username + "! en sevdiğin renk " + fav_color + "." |
Kodu çalıştırın:
|
1 |
ruby practice.rb |
Şimdiye kadar sadece dize (string) değişkenleriyle uğraştık. Peki ya farklı değişken türleri olsaydı? Aşağıdaki program bu senaryoyu test ediyor:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
Bu programı çalıştırmayı denediğinizde, Ruby bir hata mesajı verecektir:
|
1 |
ruby practice.rb |
Ancak, bu sorunu önlemek için tam sayıyı (integer) bir dizeye (string) dönüştürebiliriz:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
Burada:
-
Metot to_s değişken değerini bir dizeye dönüştürür.
Posta kodları, para birimi, telefon numaraları ve diğer sayısal veriler gibi öğelerle uğraşırken sayıları dizelere dönüştürmek yaygın bir durumdur.
Adım 4 – Dize Enterpolasyonu (String Interpolation)
Dize birleştirme güçlü bir özellik olsa da, çok kolay bir şekilde karmaşık hale gelebilir. Çoğu durumda, muhtemelen bir birleştirme operatörünü ( +) kaçırdığınızı fark edeceksiniz ve bu da büyük bir baş ağrısına yol açacaktır. Dahası, farklı veri türleriyle uğraşırken, önce dizeye dönüştürülmesi gerekir. Neyse ki Ruby, dize enterpolasyonu özelliğini kullanarak dizeye değişken değerleri eklemenin başka yollarını sunar: dize enterpolasyonu (string interpolation).
Şöyle görünür. Örneğin, şunu kullanmak yerine:
|
1 |
"merhaba, " + username + "!" |
Şunu kullanacağız:
|
1 |
"merhaba, #{username}!" |
Sözdizimi biraz garip görünse de, kodu önemli ölçüde basitleştirir. Değişken değerini dizeye dönüştürmek için manuel olarak to_s metodunu çağırmaya gerek kalmaz.
Önceki kodumuzu güncellemek için bu yeni tekniği kullanalım:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "merhaba, #{username}! kullanıcı kimliğiniz #{user_id}" |
Kodu çalıştırın:
|
1 |
ruby practice.rb |
Adım 5 – Dize Değişmezleri (String Literals) ve Dize Değerleri (String Values)
Kodlarda tanımlanan dizelerin her zaman tırnak işaretleriyle çevrili olduğuna dikkat edin. Ancak, çıktıyı konsol ekranına yazdırırken tırnak sembolleri yoktur. Aralarında açıkça bir fark vardır.
- Dize değişmezi (String literal): Kaynak kodda yazılan dizedir (tırnak işaretleri dahil).
- Dize değeri (String value): Çıktıda yazdırılan değerdir (tırnak işaretleri olmadan).
Örneğin, aşağıdaki bir dize değişmezidir:
|
1 |
"merhaba dünya" |
Bunun dize değeri merhaba dünya.
Adım 6 – Tırnak ve Kesme İşaretlerinden Kaçış (Escaping)
Gösterdiğimiz gibi, kaynak kodda dizeleri belirtmek için tırnak ve kesme işaretleri kullanılır. Bu bir sorun teşkil eder: Bunları doğrudan dize içinde kullanamazsınız. Aksi takdirde sorunlara yol açacaktır. Aşağıdaki kod bunu göstermektedir:
|
1 |
puts 'it's what it is' |
Bu sorunu aşmak için farklı taktikler vardır.
-
Alternatif Dize Sözdizimi Kullanma
Bu, sorunu aşmanın en basit yoludur. Dizeniz tek tırnak gerektiriyorsa, dize değişmezinde çift tırnak kullanın (veya tam tersi).
Önceki örneği düzeltelim:
|
1 |
puts "it's what it is" |
Başka bir örnek:
|
1 |
puts 'he said, "hello world"' |
Ancak her durumda işe yaramayacaktır. Örneğin:
|
1 |
puts "Clousdigma says, "I'm a happy boi!"" |
-
Kaçış Karakterlerini Kullanma
Ters eğik çizgi ( \) karakteri genellikle kaçış karakteri olarak adlandırılır. Ruby'nin bir sonraki karakteri olduğu gibi yorumlamasını engeller. Önceki örneği düzeltelim. Ruby'nin dahili çift tırnak işaretlerini değişmez olarak yorumlamasını önlemek için ters eğik çizgiyi kullanın:
|
1 |
puts "Cloudsigma says, \"I'm a happy boi!\"" |
-
Alternatif Sözdizimi Kullanımı
Şimdiye kadar, dize sabitini belirtmek için yalnızca tek ve çift tırnak işaretleriyle çalıştık. Ancak, önceki örnekler bunun ne kadar hızlı bir şekilde kontrolden çıkabileceğinin basit göstergeleridir. Bu sorunu çözmek için, tırnak işaretlerini tamamen bir kenara bırakıp bir dizenin başlangıcını ve bitişini belirtmek için tamamen farklı bir sembol kullanabiliriz.
Aşağıdaki örneğe bir göz atın:
|
1 |
%$the quick brown fox said, "I jumped over the lazy dog"$ |
Burada:
-
- Sembol % bir sonraki karakteri ( $, bu durumda) dizenin sınırlayıcısı olarak tanımlar.
- Buradaki dize sabiti şudur: $the quick brown fox said, "I jumped over the lazy dog"$.
Hadi bunu uygulamaya koyalım:
|
1 |
puts %$the quick brown fox said, "I jumped over the lazy dog"$ |
Burada, dize temelde şu şekilde ele alınır:
|
1 |
"the quick brown fox said, \"I jumped over the lazy dog\"" |
Ancak bu, sınırlayıcının dize içinde kullanılması durumunda kaçış karakteri kullanılması sorununu yeniden ortaya çıkarır. Bundan kaçınmanın bir yolu, genellikle dizelerde görünmeyen semboller kullanmaktır. Bu tür semboller süslü parantezler, köşeli parantezler vb. içerebilir:
|
1 |
puts %{"hello, world!", he said} |
Dize enterpolasyonlarıyla da mükemmel çalışır:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{hello, #{username}.#{user_id}!} |
Ruby programlarında dizeleri tanımlamak için %Q{} ve %q{} kullanmak da yaygındır. Burada, %Q{} çift tırnak gibi davranır ve %q{} tek tırnak gibi davranır.
Adım 7 – Yeni Satırlar ve Uzun Dizeler
Dizelerle çalışırken, dizeye yeni bir satır (newline) veya satır başı (carriage return) eklemek isteyeceğiniz durumlar olacaktır. Bunu, kaçış karakterleri olan \n (yeni satır) ve \r (satır başı) karakterlerini ekleyerek yapabiliriz.
Aşağıdaki örneğe bir göz atın:
|
1 2 |
hello_world = "the quick\nbrown fox\njumps over\nthe lazy dog" puts hello_world |
Dize sabiti kafa karıştırıcı görünüyor, değil mi? Daha iyi okunabilirlik için bunu yeniden düzenleyelim:
|
1 2 3 4 5 6 7 |
hello_world = "the quick\n" + "brown fox\n" + "jumps over\n" + "the lazy dog" puts hello_world |
Yeni satır karakterlerini manuel olarak bildirmek yerine aşağıdaki yapıyı da kullanabiliriz:
|
1 2 3 4 5 6 |
hello_world = "the quick brown fox jumps over the lazy dog" puts hello_world |
Bu yöntemde dize tüm boşlukları korur. Ancak bu durum çıktıyı bozar. Düzeltmek için fazladan boşlukları kaldırın:
|
1 2 3 4 5 |
hello_world = "the quick brown fox jumps over the lazy dog" |
Boşluk sorunu çözülmüş olsa da, bu durum kodun okunabilirliğini azaltır. Bu sorunu bir heredoc (çok satırlı dize sabitleri için kullanılan bir terim) uygulayarak çözebiliriz. Güncellenmiş kod şu şekilde görünecektir:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END the quick brown fox jumps over the lazy dog END puts hello_world |
Ruby v2.3 ve üzeri sürümlerden itibaren, squiggly heredoc sözdizimi adında başka bir özellik mevcuttur. Bu özellik, dizelerdeki baştaki boşlukları kaldırır. Bir squiggly heredoc belirtmek için, tire işaretini ( -) tilde ( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END o hızlı kahverengi tilki üzerinden atlar o tembel köpek END puts hello_world |
Step 8 – Dizeleri Çoğaltma
Bazı durumlarda, bir dizeyi birkaç kez tekrarlamak gerekebilir. Ruby, dizelerin çeşitli şekillerde çoğaltılmasına izin verir.
Bu tekniklerden biri, * operatörünü kullanmaktır. Genellikle sayılarla çalışırken çarpma operatörü olarak kullanılır. Ancak dizelerle çalışırken, dize çoğaltma operatörü haline gelir ve tek bir dizeyi gerektiği kadar tekrarlar. Tekrar sayısı bir tam sayı olmalıdır.
Aşağıdaki örnekte, Boris metni 5 kez tekrarlanacaktır:
|
1 |
print "Boris" * 5 + "\n" |
Bu özelliği kullanarak harika ASCII sanatları üretebiliriz. Aşağıdaki örneğe göz atın:
|
1 2 3 |
puts "=" * 15 puts "| merhaba dünya |" puts "=" * 15 |
Son Düşünceler
Programlamada dizeler vazgeçilmezdir. Bu kılavuz, Ruby'de dizelerle çalışmayı göstermektedir. Dizelerin nasıl oluşturulacağını ve birleştirme, yeni satırları işleme, tırnak işaretleri vb. gibi çeşitli işlemlerin nasıl gerçekleştirileceğini öğrendik. Dize enterpolasyonunu kullanarak, değişken değerlerini dizelere nasıl daha iyi entegre edeceğimizi de öğrendik. Dize çoğaltma operatörünü kullanarak tek bir dizeyi birden çok kez de tekrarlayabiliriz.
Ruby tek başına mükemmel bir programlama dili olsa da, genellikle Rails framework'ü ile birlikte kullanılır. Ruby on Rails açık kaynaklı bir web uygulaması framework'üdür. Ubuntu üzerinde Ruby on Rails kurulumu hakkında daha fazla bilgi edinin.. Ancak Ruby, MySQL ve PostgreSQL gibi diğer uygulamalarla da çalışabilir..
Keyifli Kodlamalar!












































Yorumlar
Henüz yorum yapılmamış. İlk siz olun.