(:code:)
#!/usr/bin/ruby
#
#Arrays
#
#Dizi oluşturulması
a1 = [1, 'oz', 4, '000', 33, 55]
a2 = [3, [22, 33, 44], 42, 99]
# sadece stringlerden oluşan bir dizi ise %w kullanılabilir.
a1 = %w{1 x oz}
# %q ile dizi oluşturulması
a1 = %q{devel
ruby workspace
heyyo}
# Dizinin uzunluğu
a1.size
a1.length
#Dizinin sonuna eleman eklenmesi
a1 << 4
#Dizinin belli elemanına erişim
a1.at(0)
a1[0]
a1[2]
a1[-1]
a2[1][0]
a1[2..4] #2. indisten başlayıp(2 dahil) 4. indise kadar(4 dahil)
a1[2..-2]
a1.values_at(0, 2, 3) #0, 2 ve 3. indisli elemanlar
#Iterasyon
a1.each {|x| puts x}
#Collect
a3 = [1, 2, 3, 4]
a3.collect {|x| x ** 2}
#each_with_index: Dizinin index ve value değerleri.
['a', 'b', 'c'].each_with_index do |item, index|
puts "index: #{index}, item: #{item}"
end
#reverse_each: Diziyi tersten yazdırır.
[1, 2, 3].reverse_each {|x| puts x}
#Dizideki elemanlar �zerinde işlem yapmak(collect!, map!)
a4 = ['a', 'b', 'c']
a4.collect! {|x| x.upcase}
a4.map! {|x| x.downcase}
#Dizinin belli bir indexinden belli bir indexine kadar olan elemanlarına erişmek(upto)
2.upto(a4.length-1) {|i| puts "index: #{i} value: #{a4[i]}" }
#step
a = ['1', 'a', '2', 'b', '3', 'c']
(0 .. a.length-1).step(2) do |i|
puts "i: #{i} value: #{a[i]}"
end
#for in
a = [1, 2, 3, 4]
for x in (0 .. a.length-1)
puts x
end
for y in [1, 2, 3, 4]
puts y
end
#dizideki elemanları değişkenlere ya da başka dizilere atamak.
a = [2, 4, 6]
x, y, z = a;
x1, *x2 = a; #x2 = [4,6] olur.
#Dizideki m�kerrer kayıtların �ıkarılması
a = [1,2,3,3,3,4,5,5]
a.uniq!
#Eğer diziye birden fazla aynı kaydın girmesini istemiyorsak "set" kullanırız.
#NOT: set olunca sırası bozulur dizinin.
require 'set'
a = [1,2,3,3,3,4,5,5]
b = a.to_set
b << 1 # set'te var olan değeri eklersek set'e eklenmez.
#Dizideki "nil"lerin �ıkarılması(compact)
a = [1, 2, nil, nil, 3]
a.compact
a.compact!
#Dizideki belli bir elemanın silinmesi
a = [11, 22, 33]
a.delete(11);
#Dizinin ters �evirilmesi
a = [1, 2, 3]
a.reverse
a.reverse!
#Dizideki elemanların sıralanması
a = [12, 2, -4, 33]
a.sort
a.sort!
a = ['oz', 'OS', 'ko', 'CO'] #Normalda �nce b�y�k harfler gelir.
a.sort
a.sort_by {|x| x.downcase} #B�y�k k���k harf duyarsız sıralama yapar.
#dizideki elemanların toplanması(1. y�ntem)
a = [1, 2, 3, 4, 5]
sum = 0
a.each {|x| sum += x}
#dizideki elemanların toplanması(2. y�ntem: inject)
#NOT: sum2 10 olarak hesaplanıyor!
a = [1, 2, 3, 4, 5]
sum2 = 0
a.inject(0) {|sum2, x| sum2 + x}
puts sum2
#dizinin karıştırılması, shuffle
a = [1, 2, 3, 4, 5]
a.sort_by { rand }
#Dizideki min,max elemanın bulunması
a = [1, 2, 3, 4, 5]
a.min
a.max
#dizideki belli bir aralığın �ıkarılması
a = ("a".."h").to_a
a.slice!(1..3) #1. indisten 3. indise kadar �ıkar(1 ve 3 dahil)
a.slice!(1) #1.indisli elemanı �ıkar.
a.slice!(2,3) #2. indisten sonraki 3 elemanı �ıkar.(2 dahil)
#Dizide belli kriterlere uyan elemanların bulunması
a = ("a".."h").to_a
a.find_all { |x| x < "e" }
a.reject { |x| x < "e" }
#D�zenli ifadeler ile dizideki elemanlara arama yapılması
a = ("a".."h").to_a
a.grep /[abcx]/
a.grep /[^g]/ #i�inde g harfi olmayanların bulunması
#Dizilerde k�me işlemler
a = [1, 2, 3]
b = [3, 4, 5]
a | b #[1, 2, 3, 4, 5]
a & b #[3]
a - b #[1,2]