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| i Convertire 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)