1 | 2 | 3 | 4

Ruby in Venti Minuti

Se vogliamo dire “Ciao” molte volte senza stancarci troppo le dita? Dobbiamo definire un metodo!

irb(main):010:0> def c
irb(main):011:1> puts "Ciao Mondo!"
irb(main):012:1> end
=> nil

Il codice def c apre la definizione del metodo. Non fa altro che dire a Ruby che stiamo definendo un metodo, il cui nome è c. La linea successiva è il corpo, la stessa linea che abbiamo visto in precedenza: puts "Ciao Mondo". Infine l’ultimo end dice a Ruby che abbiamo finito la definizione del metodo. La risposta di Ruby => nil significa che ha capito che abbiamo finito la creazione del metodo.

Chiamare un metodo più volte

Ora proviamo questo metodo più volte:

irb(main):013:0> c
Ciao  Mondo!
=> nil
irb(main):014:0> c()
Ciao Mondo!
=> nil

Bene, fino a qui è facile. Chiamare un metodo in Ruby è semplice, basta scrivere il suo nome. Se il metodo non ha bisogno parametri, questo è tutto ciò che hai bisogno di fare. Se preferisci puoi anche aggiungere delle parentesi vuote, ma non sono necessarie.

E se vogliamo dire “ciao” ad una sola persona e non a tutto il mondo? Basta ridefinire c in modo che accetti “nome” come parametro.

irb(main):015:0> def c(nome)
irb(main):016:1> puts "Ciao #{nome}!"
irb(main):017:1> end
=> nil
irb(main):018:0> c("Matz")
Ciao Matz!
=> nil

Così funziona… ma diamo un’occhiata a cosa sta succedendo.

Convertire variabili in stringhe

Che cosa è #{nome} ? Questo è un modo per inserire qualcosa in una stringa. Quello che è contenuto nelle graffe viene convertito in una stringa (se non lo è già) e sostituito col valore a cui fa riferimento. Puoi anche utilizzare questa strada per essere sicuro che un nome abbia le iniziali maiuscole:

irb(main):019:0> def c(nome = "Mondo")
irb(main):020:1> puts "Ciao #{nome.capitalize}!"
irb(main):021:1> end
=> nil
irb(main):022:0> c "chris"
Ciao Chris!
=> nil
irb(main):023:0> c
Ciao Mondo!
=> nil

Ci sono molte altre cose che puoi fare in questo modo. Una è chiamare il metodo senza le parentesi. Se quello che stai facendo è ovvio, le parentesi non sono obbligatorie. L’altro esempio riguarda il parametro di default Mondo. Letteralmente significa “Se non viene passato il campo nome, usa come nome di default "Mondo"”.

Diventare Persone Cordiali

Se vogliamo veramente una “persona” cordiale, che ricorda il tuo nome, che ti saluta e che ti tratta sempre con rispetto dobbiamo creare un oggetto. Creiamo quindi una classe chiamata “PersonaCordiale”.

irb(main):024:0> class PersonaCordiale
irb(main):025:1>   def initialize(nome = "Mondo")
irb(main):026:2>     @nome = nome
irb(main):027:2>   end
irb(main):028:1>   def saluta
irb(main):029:2>     puts "Ciao #{@nome}!"
irb(main):030:2>   end
irb(main):031:1>   def congeda
irb(main):032:2>     puts "Arrivederci #{@nome}, a presto."
irb(main):033:2>   end
irb(main):034:1> end
=> nil

La nuova parola qui è class, essa definisce una nuova classe chiamata PersonaCordiale ed una serie di metodi. Fai attenzione a @nome. Questa è una variabile d’istanza ed è disponibile a tutti i metodi della classe. Come vedi l’abbiamo usata in saluta e in congeda.

Quindi come mettiamo in funzione la nostra classe PersonaCordiale? Creare un oggetto.