Dar vieno analitiko svetainė

Petras Kudaras

Rikiavimas Ruby kalba

Perlo rikiavimo pavyzdžiai gali atrodyti sudėtingi, nes Perlo sintaksėje daug visokių @$%{},
o ir patys objektai iš tikrųjų tėra tik asociatyvieji masyvai, magišku būdu žinantys kokiam paketui jie
priklauso. Tad štai rikiavimo Ruby kalba pavyzdžiai.

Paprastas rikiavimas.

a = [0,3,5,3,1,2,4,6,2,4,5,7,3]
a.sort!
a.each{|i| print i, ' '}

(Galima tiek Perle, tiek Ruby rašyti tiesiog print a, bet tai išves masyvo narius neatskiriant juos tarpais.
Pitonas matyt dumpina visą struktūrą tokiu atveju)

Rikiavimas su funkcija:

a = [0,3,5,3,1,2,4,6,2,4,5,7,3]
a.sort! { |x, y| x - y }
a.each{|i| print i, ' '}

Hešų masyvo rikiavimas:

a = [{'item' => 6, 'zodis' => 'ka'},
     {'item' => 2, 'zodis' => 'kva'},
     {'item' => 5, 'zodis' => 'kre'}]
a.sort! { |x, y| x['item'] <=> y['item'] }
a.each{|i| print "item: #{i['item']}, zodis: #{i['zodis']}\n" }

Objektų rikiavimas:

class Objektas
def initialize(skaicius) @skaicius = skaicius end
def kasastoks() print "Esu objektukas nr. #{@skaicius}\n" end
def skaicius() @skaicius end
end
a = [Objektas.new(3), Objektas.new(2), Objektas.new(19), Objektas.new(1)]
a.sort! { |x, y| x.skaicius <=> y.skaicius }
a.each { |i| i.kasastoks }

Verta pažymėti, jog Ruby laikosi visų objektinio programavimo principų, ir visi klasės kintamieji
yra privatūs (t.y. skirtingai nuo Python, juos galima pasiekti tik iš pačios klasės aprašymo)