Diziler, tam sayı indexli bir şekilde farklı nesnelerin tutulabileceği bir veri
yapısıdır.
C, Java vb. dillerde olduğu gibi dizi indexi 0
‘dan başlar. -1
son elemanı
temsil eder.
Boş bir dizi oluşturma
arr = Array.new
=> []
arr = []
=> []
Dizi oluşturma
ary = [1, "two", 3.0]
=> [1, "two", 3.0]
Array.new(3)
=> [nil, nil, nil]
Array.new(3, true)
=> [true, true, true]
Array.new(4) { Hash.new }
=> [{}, {}, {}, {}]
empty_table = Array.new(3) { Array.new(3) }
=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
arr = %w[a b c]
=> ["a", "b", "c"]
Dizideki elemanlar
arr = [1, 2, 3, 4, 5, 6]
arr[2]
=> 3
arr[-1]
=> 6
arr[-3, 2]
=> 4, 5
arr[1...4]
=> 2, 3, 4
arr.at(0)
=> 1
Dizi hakkında bilgi edinme
Boyutu öğrenme
browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE']
browsers.length
=> 5
browsers.count
=> 5
browsers.size
=> 5
Bu elemandan kaç tane var ?
ary = [1, 2, 4, 2]
ary.count(2)
=> 2
Koşula uyan kaç eleman var ?
ary.count { |x| x%2 == 0 }
=> 3
Boş mu ?
browsers.empty?
=> false
Bu eleman var mı ?
browsers.include?('Konqueror')
=> false
İndexi ne ?
a = [ "a", "b", "c" ]
a.index("b")
=> 1
a.index("z")
=> nil
Diziye eleman ekleme
arr = [1, 2, 3, 4]
arr.push(5)
=> [1, 2, 3, 4, 5]
arr << 6
=> [1, 2, 3, 4, 5, 6]
Belirtilen index’e elemanı ekle
arr.insert(3, 'apple')
=> [0, 1, 2, 'apple', 3, 4, 5, 6]
Belirtilen index’e birden fazla eleman ekle
arr.insert(3, 'orange', 'pear', 'grapefruit')
=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6]
Diziden eleman silme
arr = [1, 2, 3, 4, 5, 6]
arr.pop
=> 6
arr
=> [1, 2, 3, 4, 5]
Belirtilen indexten eleman silme
arr.delete_at(2)
=> 4
arr
=> [2, 3, 5]
Belirtilen elemanı dizideki heryerden silme
arr = [1, 2, 2, 3, 2]
arr.delete 2
=> [1, 3]
Dizideki nil
değerleri kaldır
arr = ['foo', 0, nil, 'bar', 7, 'baz', nil]
arr.compact
=> ['foo', 0, 'bar', 7, 'baz']
arr
=> ['foo', 0, nil, 'bar', 7, 'baz', nil]
arr.compact!
=> ['foo', 0, 'bar', 7, 'baz']
arr
=> ['foo', 0, 'bar', 7, 'baz']
Dizideki tekrar eden elemanları sil
arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
arr.uniq
=> [2, 5, 6, 556, 8, 9, 0, 123]
Dizilerde döngü
arr = [1, 2, 3, 4, 5]
arr.each { |a| print a -= 10, " " }
-9 -8 -7 -6 -5
arr.reverse_each { |a| print a }
54321
Dizideki elemanları modifiye ederek yeni bir dizi oluşturma
map
ve collect
metodları aynı işi görür.
arr.map { |a| 2*a } #=> [2, 4, 6, 8, 10]
arr #=> [1, 2, 3, 4, 5]
arr.map! { |a| a**2 } #=> [1, 4, 9, 16, 25]
arr #=> [1, 4, 9, 16, 25]
Dizide belli koşullara uyan elemanları seçme
arr = [1, 2, 3, 4, 5, 6]
# 3 ten büyükleri seç
arr.select { |a| a > 3 }
=> [4, 5, 6]
# 3 ten küçükleri çıkar
arr.reject { |a| a < 3 }
=> [3, 4, 5, 6]
# 4 ten küçükleri çıkar
arr.drop_while { |a| a < 4 }
=> [4, 5, 6]
arr
=> [1, 2, 3, 4, 5, 6]
Elemanları birleştirme
[ "a", "b", "c" ].join("-")
=> "a-b-c"
Dizideki elemanların kombinasyonları
a = [1, 2, 3]
a.permutation.to_a
=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
a.permutation(1).to_a
=> [[1],[2],[3]]
a.permutation(2).to_a
=> [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
a.permutation(3).to_a
=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
a.permutation(0).to_a
=> [[]] # one permutation of length 0
a.permutation(4).to_a
=> [] # no permutations of length 4
Dizideki elemanlardan rastgele seçim
a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
a.sample
=> 7
a.sample(4)
=> [6, 4, 2, 5]
Diziyi karıştır
a = [ 1, 2, 3 ]
a.shuffle
=> [2, 3, 1]