From Wiki

Ruby: Arrays

#!/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&#305;na eri&#351;im
a1.at(0)
a1[0]
a1[2]
a1[-1]
a2[1][0]
a1[2..4] #2. indisten ba&#351;lay&#305;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&#287;erleri.
['a', 'b', 'c'].each_with_index do |item, index|
	puts "index: #{index}, item: #{item}"
end

#reverse_each: Diziyi tersten yazd&#305;r&#305;r.
[1, 2, 3].reverse_each {|x| puts x}

#Dizideki elemanlar �zerinde i&#351;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&#305;na eri&#351;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&#305; de&#287;i&#351;kenlere ya da ba&#351;ka dizilere atamak.
a = [2, 4, 6]
x, y, z = a;
x1, *x2 = a; #x2 = [4,6] olur.

#Dizideki m�kerrer kay&#305;tlar&#305;n �&#305;kar&#305;lmas&#305;
a = [1,2,3,3,3,4,5,5]
a.uniq!

#E&#287;er diziye birden fazla ayn&#305; kayd&#305;n girmesini istemiyorsak "set" kullan&#305;r&#305;z.
#NOT: set olunca s&#305;ras&#305; bozulur dizinin.
require 'set'
a = [1,2,3,3,3,4,5,5]
b = a.to_set
b << 1 # set'te var olan de&#287;eri eklersek set'e eklenmez.

#Dizideki "nil"lerin �&#305;kar&#305;lmas&#305;(compact)
a = [1, 2, nil, nil, 3]
a.compact
a.compact!

#Dizideki belli bir eleman&#305;n silinmesi
a = [11, 22, 33]
a.delete(11);

#Dizinin ters �evirilmesi
a = [1, 2, 3]
a.reverse
a.reverse!

#Dizideki elemanlar&#305;n s&#305;ralanmas&#305;
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&#305;z s&#305;ralama yapar.

#dizideki elemanlar&#305;n toplanmas&#305;(1. y�ntem)
a = [1, 2, 3, 4, 5]
sum = 0
a.each {|x| sum += x}

#dizideki elemanlar&#305;n toplanmas&#305;(2. y�ntem: inject)
#NOT: sum2 10 olarak hesaplan&#305;yor! 
a = [1, 2, 3, 4, 5]
sum2 = 0
a.inject(0) {|sum2, x| sum2 + x}
puts sum2

#dizinin kar&#305;&#351;t&#305;r&#305;lmas&#305;, shuffle
a = [1, 2, 3, 4, 5]
a.sort_by { rand }

#Dizideki min,max eleman&#305;n bulunmas&#305;
a = [1, 2, 3, 4, 5]
a.min
a.max

#dizideki belli bir aral&#305;&#287;&#305;n �&#305;kar&#305;lmas&#305;
a = ("a".."h").to_a
a.slice!(1..3) #1. indisten 3. indise kadar �&#305;kar(1 ve 3 dahil)
a.slice!(1) #1.indisli eleman&#305; �&#305;kar.
a.slice!(2,3) #2. indisten sonraki 3 eleman&#305; �&#305;kar.(2 dahil)

#Dizide belli kriterlere uyan elemanlar&#305;n bulunmas&#305;
a = ("a".."h").to_a
a.find_all { |x| x < "e" }
a.reject { |x| x < "e" }

#D�zenli ifadeler ile dizideki elemanlara arama yap&#305;lmas&#305;
a = ("a".."h").to_a
a.grep /[abcx]/
a.grep /[^g]/ #i�inde g harfi olmayanlar&#305;n bulunmas&#305;

#Dizilerde k�me i&#351;lemler
a = [1, 2, 3]
b = [3, 4, 5]
a | b #[1, 2, 3, 4, 5]
a & b #[3]
a - b #[1,2]

Retrieved from http://kozgun.net/wiki/pmwiki.php?n=Ruby.Arrays
Page last modified on November 29, 2006, at 10:59 PM