10 Ekim 2013 Perşembe

Temel Kavramlar - Ruby'de Array & Hash

Ruby'de Array kullanimi bazi kucuk nuanslari anladiktan sonra daha kolay ve kullanisli.

Oldukca geniz bir yelpazedeki array fonksiyonlari sayesinde mantigini anlayinca elinizde ne denli guclu bir yapi oldugunu kavrayabiliyorsunuz.

Array  (Dizi)

Ruby'de degiskenleri .NET de oldugu gibi onceden tanimlamak gerekmiyor. ilk aldiklari degere gore otomatik olarak tip atamasi yapiliyor. Dolayisiyla Array icin de onden bir tanimlama yapmak gerekmiyor.

x=[]

bu kadar

daha sonra icine istediginiz bilgileri farkli sekillerde koyabiliyorsunuz. Mesela kurek (shovel)  operatoru yani (<<) kullanarak
x << "word" 
veya
x.push("word") 
veya
x.unshift("word") ile


Simdi sadece ornekler verip aciklamayi uzun uzun yapana kadar ne yaptiklarini karsilarina yazarak kisace anlatmaya calisayim.

x=["a1", "a2", "a3"]
puts x.join(',')
-----------------------------------> a1, a2, a3

"this is a test".scan(/\w/).join('.)
----------------------------------> t,h,i,s,i,s,a,t,e,s,t

peki bu satir icin biraz konusalim. bunu benim de anlamam zor oldu. cunku komutlari ard arda baglayarak calistirdik.
parcalarsak belki biraz anlasilir. ama (/\w/) konusuna takiliyorsaniz bunun sadece bir regular expression oldugunu soyleyebilirim


puts "kisa metin. baska metin. son metin.".split(/\./).inspect
-------------> ["kisa metin","baska metin","son metin"]


Array Iteration

Hizli bir baslangica ne dersiniz ?

each


Yine ard arda baglanmis komutlar ve kod blogundan gecse de onemli kismi array'i each ile madde madde taramak.
Tarama esnasinda rastlanan madde element degiskenine gonderiliyor. pipe dan sonraki bolumde ise bu degisken string'e cevrilip sonuna x yazilarak ekrana yazdiriliyor.

bu bloklu yazma modu basta biraz ter geliyor ama zamanla insanin gozu de mantigi da alisiyor.

collect / map


Aciklama
internette bir kaynaga gore fark buymus. 
Array#collect (and Array#map) return a new array based on the code passed in the block. Array#each performs an operation (defined by the block) on each element of the array.

yani collect blokta istenenlere gore yeni bir array olarak donuyor
oysa each blokta istenilenleri array'deki maddelere uyarliyor.

first, last, -1, -2 

Array icindeki maddeler arasinda dolasirken isminden de anlasilacagi uzere ilk ve son maddelere girmek icin x.first veya x.last kullanmak mumkun. Ancak tam burada Ruby'deki array yapisini algilamak icin  bize bir firsat doguyor.

mesela [1,2,3,4,5] gibi bir array 5 maddeden olusuyor degil mi ?
[1,2,3,4,5].size dersek de 5 goruyoruz
simdi su referanslari bir inceleyelim

-1 referansinin array'in sonuna gittigini
-2 ile sondan bir oncekine ulastigimizi farketmissinizdir. sondan basa dogru sanki uc uca eklenmis gibi degil mi

ama referansini 5 veya 6 verdiginizde hata vermeyip nil ile donmesi de goze carpmasi gereken baska bir konu.

sondaki bir maddenin yeni giris icin bos tutulan yer oldugunu dusunmekte fayda oldugu yonunde duyumlar aldim. Benden soylemesi



Hash

Benim icin yeni olan bu kavram aslinda array kavrami ile oldukca yakin. Bugune kadar nedense hash denince hash koddan baska birsey dusunmedigim icin ilk karsilastigimda ne oldugunu idrak etmem biraz zaman aldi.

Dictionary objelerinden olusan bir array diye kisaca ozetleyebiliriz. yani ismi olan ve degeri olan ikililerin olusturdugu arrayler.

 dict = {'cat'=>'feline animal', 'dog'=>'canine animal'}
 bu tanimda iki tane madde oldugunu unutmayalim. yani dict.size = 2

dict['cat'] ----> feline animal

dict['cat'] = "fluffy animal"
puts dict['cat']  ---------> "fluffy animal"

yani icerigi bu sekilde degisebiliyor

each

Arraydeki gibi tek tek maddelerin ustunden gecmek icin kullaniyoruz ama bu sefer ikili olarak geliyorlar.

keys, values

hash icindeki tum key'ler ve tum value'lari alab'lmek icin kullanilir.
dict.keys
dict.values
gibi

delete, delete_if, delete_at

hash ustunden madde silmek icin kullanilir.
dict.delete("cat")
dict.delete_if{|key,value|, value<25}





1 yorum:

  1. Blackjack Online - JTG Hub
    Welcome to JTG's Blackjack tables! 고양 출장마사지 Find out 천안 출장샵 more about the features, strategies, and how to play Blackjack for 문경 출장마사지 real money. 아산 출장마사지 Visit our 경기도 출장샵 site

    YanıtlaSil