#!/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]