RUBY > Stworzony przez Yukihiro Matsumoto jako połączenie wybranych cech języków Perl, Smalltalk, Eiffel, Ada i Lisp. Pierwsza wersja pojawiła się w 1995. > Strona domowa: www.ruby-lang.org > Wszystko w Rubym jest obiektem. > Wszystko w Rubym jest konfigurowalne (otwarte klasy, możliwość przedefiniowania metod...) > ruby --> interpreter programu irb --> interaktywna konsola ############################################################ FUNKCJE ############################################################ 1. Sprawdź, że poniższe definicje są równoważne def mnozenie(a,b) iloczyn=a*b return iloczyn end def mnozenie(a,b) iloczyn=a*b end def mnozenie(a,b) a*b end ############################################################ 2. Elastyczny sposób obsługi funkcji def test(a=1,b=2,c=a+b) puts "#{a}, #{b}, #{c}" end test test 3 test 3,5 test 3,5,7 test 3,5,7,11 <-- wrong number of arguments! def proba(a=1,b=3,*c) puts "#{a}, #{b}" c.each {|x| print "#{x}, "} end proba 3,5,6,7,8,9,11,12,2,2,2,3 ############################################################ OTWARTE KLASY ############################################################ Przykład: przelicznik jednostek class Numeric def cale self end def stopy self*12.cale end def jardy self*3.stopy end def mile self*5280.stopy end def wstecz self * -1 end def naprzod self end end puts 10.mile.wstecz puts 2.stopy.naprzod ############################################################ TABLICE ############################################################ 1. Podstawy m=[1,2.0,"trzy",4,5,6] puts m puts m.inspect puts m[2] puts m[-1] puts m.last puts m.first puts m.length 2. Operacje na tablicach k=[5,6,7,8,9] puts m+k puts m.inspect + k.inspect puts m & k puts m - k # pop zwraca i usuwa ostatni element tablicy puts "pop k = ", k.pop puts "pop k = " + k.pop.to_s # push dopisuje do końca tablicy k.push(12,13) puts k.inspect # shift zwraca i usuwa pierwszy element tablicy puts "shift = " + k.shift.to_s puts k.inspect # unshift dopisuje do początku tablicy k.unshift(-3,"abc",4) puts k.inspect 3. Tablice asocjacyjne (hash'e) samochody = { 'maluch' => 'fiat', 'garbus' => 'vw', 'zuk' => 'fso' } puts samochody['garbus'] # LUB owoc={} owoc['sliwka']='mniam' owoc['agrest']='mniam' owoc['cytryna']='ble' puts owoc puts owoc.inspect puts owoc.length puts owoc.values puts owoc.keys # LUB zarobki=Hash['dziekan',10000,'prof',6000,'adiunkt',3000, 'asystent',1800,'student',650] puts zarobki.inspect zarobki.each{|klucz,wartosc| puts "#{klucz} zarabia #{wartosc} PLN"} zarobki.sort.each{|klucz,wartosc| puts "#{klucz} zarabia #{wartosc} PLN"} zarobki.sort_by{|k,v| v}.each{|klucz,wartosc| puts "#{klucz} zarabia #{wartosc} PLN"} zarobki.sort_by{|k,v| v}.reverse.each{|klucz,wartosc| puts "#{klucz} zarabia #{wartosc} PLN"} puts zarobki.select{|stanowisko,placa| placa > 2500} # Co jeszcze można zrobić z obiektem takim jak zarobki? puts "\n\zarobki.methods : "+ zarobki.methods.sort.join("\n").to_s+"\n\n"