Siete pronti a passare all'azione e scrivere le vostre prime righe in Ruby?
Spero che comprenderete la mia decisione di tralasciare i preamboli, dopo tutto questa non è una guida convenzionale a Ruby o Rails, per le quali rimando volentieri alla Guida Ruby e Guida Ruby on Rails pubblicate su HTML.it. In aggiunta, non scordatevi che per comprendere al meglio quanto seguirà sarà necessario tenere sempre sotto mano le risorse presentate nel primo post e la documentazione di Ruby.
Dunque, per cominciare a scrivere le vostre prime righe dovete almeno aver scelto un editor ed installato Ruby sul vostro computer. Come anticipato, questi primi post non tratteranno ancora l'argomento Rails sebbene siano comunque in tema poiché Rails... è Ruby!
In Ruby, lo ribadisco, ogni elemento è un oggetto. Esistono 4 oggetti fondamentali da tenere a mente:
- Il modulo Kernel, il cuore del linguaggio
- La classe Object, l'oggetto genitore di qualsiasi classe e modulo in Ruby
- La classe Module
- La classe Class
Non preoccupatevi troppo di conoscere ogni singola funzione di questi elementi, per ora. Preoccupatevi tuttavia di dare uno sguardo alle loro caratteristiche accedendo ai link sopra riportati.
Ovviamente Ruby integra tra le altre cose le variabili, così come i tipi di dato. Ogni tipo di dato in Ruby è un oggetto: String, Numeric, Integer, Array, Hash e via dicendo...
Bene, ora siete veramente pronti. Cominceremo con qualcosa di semplice. Creiamo la nostra prima classe.
# Classe persona class Person def initialize(name = "Anonymous") @name = name end def ciao() puts "Ciao #{@name}" end end # Istanzio la classe weppos = Person.new("weppos") guest = Person.new() # I miei ospiti sono educati, sanno anche salutare weppos.ciao guest.ciao()
Banale? Sì, ma abbastanza complessa da permetterci di analizzare un po' di basi del linguaggio che ci torneranno utili. Potete scrivere questo mini programma in un file, ad esempio person.rb
ed eseguirlo via
percorso/interprete/ruby person.rb
oppure via IRB, interactive ruby shell.
Osservazioni generali
La prima cosa che mi è saltata all'occhio di Ruby è che non richiede l'uso del punto e virgola ";
" come carattere di terminazione del comando.
Il ritorno a capo è sufficiente, a meno di non voler spezzare più esecuzioni sulla stessa riga.
puts "Mi chiamo "; puts "weppos" #=> weppos
La scrittura del codice, intesa come spazi e tabulazioni, non è vincolante come per esempio in Python, tuttavia ci sono delle convenzioni (le vedremo in futuro) che è bene mantenere.
I metodi possono essere invocati con o senza parentesi, ad esempio:
puts "Ciao #{@name}" puts("Ciao #{@name}\n")
La stessa regola vale per i metodi senza argomenti:
weppos.ciao weppos.ciao()
I commenti in Ruby sono preceduti da #
. Non esistono ufficialmente commenti multi linea (sebbene esista ==begin
è poco utilizzato... praticamente non l'ho mai visto scritto!).
Definire una classe ed un metodo
Come potete vedere, le classi vengono definite con la sintassi class NomeClasse
.
Per ogni classe possono essere inseriti metodi, definibili via def nome_metodo
.
initialize
è un metodo speciale poiché rappresenta il costruttore della classe.
Per istanziare una classe, a differenza di altri linguaggi, la sintassi è tipicamente object oriented. Il metodo new
viene chiamato sulla classe passando al costruttore i parametri desiderati.
Per ora non preoccupatevi troppo della differenza tra @name
e name
. Vi basti sapere che la prima rappresenta una variabile d'istanza, la seconda una variabile del metodo.
Stampa del valore
Per stampare a video il valore della nostra stringa abbiamo utilizzato il metodo puts
appartenente all'oggetto Kernel
. Inoltre, la stringa passata al metodo puts è particolare poiché racchiusa tra virgolette "
e racchiude al suo interno una valutazione real time di una variabile.
Infatti, la sintassi #{nomevariabile}
causa la valutazione della variabile indicata e la sostituzione con il reale valore. In PHP avrei scritto echo "$variabile"
.
Ed ora che facciamo?
Potrei andare avanti un mese a scrivere Hello World o script simili ma credo che siano poco divertenti a meno che non vogliate trovarvi sul PC un Hello World
danzante ogni volta che avviate il sistema operativo. Così, continuando sul filone del diario, vi renderà partecipe (virtualmente e parzialmente per ovvie ragioni aziendali) di un progetto che sto seguendo.
Si tratta di una piattaforma in Rails, che include tra l'altro diversi mini progetti interessanti come librerie per interagire con webservice, metaprogrammazione, XML, HTTP Client e cosucce del genere. Buona parte dei post sarà organizzata cercando di fornire un mix tra basi teoriche, script e suggerimenti che si sono resi necessari nel corso dello sviluppo del progetto e delle sue classi.
Con un banale script avete visto come definire classi, metodi, istanziare oggetti e chiamare metodi stampando valori in output. Non male per dieci righe di codice. Immaginate cosa significhi avere a che fare con un progetto reale ed esigenze reali.
Insomma, un progetto vero è più interessante di Hello World
, no?