Perche' adoro Ruby....
Ruby è un linguaggio object-oriented originato in Giappone, e qui molto diffuso, ad opera di Yukihiro Matsumoto nel 1993 (la release 1.0 risale pero' al 1996).
Il nome Ruby si rifà a Perl, in italiano rispettivamente rubino e perla.
Ruby è facile da imparare anche per chi non ha mai scritto una riga di software - questa è una grossa differenza rispetto a tutti gli altri linguaggi (object-oriented e non);
In breve:
In Ruby tutto e' un oggetto, anche i semplici numeri;
quindi per farsi calcolare i quadrati dei numeri da 0 a 14 possiamo scrivere
15.times { |x| puts x*x }
Dato che "15" è un oggetto della classe Number, allora gli si può applicare il metodo times e passargli un blocco di codice.
Nell'iterazione, il valore corrente verrà chiamato x (ecco il significato di quel |x|).
Altri esempi...aggiungere il numero di riga a ogni linea in arrivo dallo Standard Input e stamparla a schermo:
$stdin.each_line { |a| printf ARGV[0]+"%s", $stdin.lineno, a }
oppure aggiungere a ogni riga in arrivo dallo Standard Input una stringa specificata da riga di comando e stamparla a schermo:
$stdin.each_line { |a| print a.chomp, ARGV[0], "n" }
Un algoritmo di QuickSort:
def qsort l # in input prende un array return [] if l.size == 0 # ritorna vuota se era vuoto x, r = *l # x=pivot, r=resto della lista a, b = r.partition{|i| iConvertire ogni carattere di una stringa con il suo equivalente xor:
def cambiami str b = [] str.each_byte { |x| b
Lettura di un file .INI:
def fileini cfgfile fail "file non trovato: #{cfgfile}" unless FileTest.exists? cfgfile cfg = Hash.new File.open(cfgfile).each_line do |x| # per ogni riga x del file: x.chomp! # elimina CR/LF x.gsub! /s*#.*$/, "" # elimina i commenti x.sub! /s*=s*/, "=" # elimina eventuali spazi attorno a '=' ch = x.split "=",2 # splitta chiave e valore attorno a '=' cfg.store *ch if ch.length == 2 # aggiungi chiave e valore se entrambe end cfg end
(Tutti gli esempi sono tratti da http://www.alfonsomartone.itb.it/qqvaqs.html)