01 Jul 2013
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 ]
Kaynaklar
ruby-doc