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)

6 Comments

  1. Moksliuk, labai tau ačiū už tokius postus! Tik dar labai idomu būtų sužinot kiek kuria kalba atitinkantis veiksmai užima laiko, kiek naudoja resursų… tiesiog palyginimui.

  2. o ar galima kaipnors su Perlu programint ant win? ar geriau net nepradeti ieskokti budu ir iskart kaltis linux?

  3. seip tavo svetaines kodo ant savo win98se negaliu paziureti, nzn kas kaltas bet negaliu :\

Comments are closed.