Guida Ruby on Rails: il linguaggio Ruby – Parte 2

Bentrovato a questo nuovo capitolo della guida su Ruby on Rails.
Quest’oggi proseguiremo, sulla scia della precedente lezione, nel tentativo di rendere la sintassi di Ruby più chiara a tutti. La scorsa volta abbiamo parlato di stringhe, array, hash e regular expression. Oggi quindi, iniziamo con lo sviscerare la parte logica del linguaggio.

Le strutture di controllo

Come la maggior parte dei linguaggi che si rispettino, anche Ruby possiede tutte le consuete strutture di controllo come if, while e i loops. Come abbiamo già visto in precedenza, l’unica differenza significativa sta nell’assenza di parentesi graffe a favore dell’utilizzo di end. Per esempio, un ciclo if appare così:

if x == 10
     print “x è 10″
elsif x == “20″
     print “x  è 20″
else
     print “x non è né 10 né 20”
end

mentre un ciclo while, ha più o meno questo aspetto:

i = 0
while i  < 5 
     puts i
     i += 1
end

Ruby utilizza, però, anche alcune varianti di queste strutture: unsless, ad esempio, è molto simile al controllo if, a differenza del fatto che controlla che la condizione non sia vera. Parimenti until rispecchia while, ad eccezione del fatto che permette il ripetersi del loop finché la condizione risulti vera.

Inoltre, qualora l’espressione sia singola, esiste la possibilità di scrivere tutto su una riga senza troppi fronzoli:

puts “Mangia ancora” if calories < 2800 
puts calories +=1 while calories<10

Blocchi

I blocchi non sono altro che porzioni di codice tra parentesi graffe o tra do… end. Nello specifico è comune convenzione utilizzare le parentesi per i blocchi su singola linea e do… end per i blocchi estesi su più linee.

{ puts “Ciao!” } # questo è un blocco su singola linea

5.times do |x|            ###
    puts "x = #{x}"    # questo è un blocco multilinea
end                ###

Come hai potuto notare prima del blocco do… end è stato utilizzato il metodo times() che indica, in associazione con un numero intero, il numero di volte che il blocco deve essere ripetuto. Nel caso affrontato poc’anzi la console restituirà:

rubylinguaggiopart21

Spesso i blocchi vengono utilizzati in unione alle strutture di controllo di cui abbiamo discusso nel paragrafo precedente. Ad esempio, è prassi comune imbattersi in un codice del tipo:

a = %w{vincenza diamantina carlotta}
a.each {|a| puts a}

che generà un output di questo tipo:

rubylinguaggiopart22

Come hai potuto notare dai due precedenti esempi, all’interno del simbolo || i valori vengono passati al blocco come parametri.

Classi

Le classi in Ruby rispettano i canoni logici comuni agli altri linguaggi di programmazione, ovvero incarnano uno schema per la rappresentazione di un oggetto in base alla differenziazione per insiemi e sotto-insiemi.

Ogni classe inizia con la parola chiave class, seguita dal nome attribuito che deve iniziare con la lettera maiuscola, e infine termina con il consueto end. All’interno del corpo possono essere definiti i metodi della classe e i metodi d’istanza. I metodi della classe sono preceduti da self. e rendono il metodo accessibile all’interno dell’intera applicazione. Contrariamente, i metodi d’istanza sono accessibili solamente all’interno della classe stessa. Prima di complicare ulteriormente il concetto arricchendolo di altre nozioni; facciamo un esempio:

class Welcome
    # questo è un metodo della classe
    def self.check_name
        self.name.empty?
end
    # questo è un metodo d’istanza
    def name
        @name
    end
end

Nel caso volessi procedere a rendere accessibili i valori di un metodo d’istanza all’esterno della classe, dovresti creare metodi che ritornino i loro valori. Ad esempio la classe:

class Welcome
    def initialize(name)
        @name = name
    end
    def name
        @name
    end
    def name=(new_name)
        @name = new_name
    end
end

richiamata dal seguente codice:

a = Welcome.new("Carlotta")
print "Ciao #{a.name}! \n"
a.name = "Diamantina"
print "Ciao #{a.name}! \n"

avrebbe come risultato:

rubylinguaggiopart23

Se vuoi eseguire questo codice all’interno della console ti conviene, a causa della sua corposità, di scriverlo all’interno di un file .rb e richiamarlo da terminale con il comando

    ruby nome_del_file.rb

Moduli

I moduli sono simili alle classi ma, a differenza di esse, non è possibile creare oggetti da un modulo. A cosa servono quindi i moduli? Semplice. I moduli si prefiggono due propositi: in primo luogo agiscono da namespace raggruppando quindi metodi simili non diversamente definiti altrove e, in secondo luogo, permettono di scambiare funzionalità tra classi differenti, pratica meglio definita con il nome di mixin. Anche in questo caso la sintassi è elementare ed estremamente simile a quella delle classi.

module ScriviNumero
     def scrivi
          … #contenuto
      end
end

Conclusioni

Questa non è, e non vuole essere, una guida alla programmazione o al linguaggio Ruby; l’obiettivo di queste lezioni incentrate prettamente sul linguaggio Ruby è quello di darti una infarinatura generale di nozioni senza scendere negli infiniti dettagli che tale linguaggio meriterebbe, dandoti la possibilità di riconoscere i costrutti basilari. Per chi di voi volesse approfondire maggiormente Ruby potete far riferimento a tre guide considerate universalmente le migliori:

  • Ruby User’s Guide: della serie The Pragmatic Programmer’s Guide, disponibile gratuitamente la prima versione inglese;
  • Programming Ruby: traduzione inglese della guida originale giapponese redatta dallo stesso Yukihiro Matsumoto, creatore di Ruby;
  • The Ruby Programming Wikibook: comodo cookbook in formato wiki adatto a persone con conoscenze di livello base o intermedio;

Ad ogni modo, procedendo con la guida, ci imbatteremo in altri concetti che spiegherò e chiarirò seduta stante in modo da non lasciare alcun buco nella realizzazione della nostra web app in Ruby on Rails. Quindi… non temere, tutto sarà chiaro!

GUIDA RUBY ON RAILS: INDICE LEZIONI
1) Introduzione
2) L’ambiente di lavoro e la nostra prima app
3) Un assaggio di dinamicità
4) Architettura di un’applicazione
5) Il linguaggio Ruby – Parte 1
6) Il linguaggio Ruby – Parte 2
7) Creiamo c-Bookcase
8) Convalida e test
9) Ruby on Rails: page layout
10) Guida Ruby on Rails: creiamo il carrello

Tag: , , ,

L'autore

Da sempre appassionato di nuove tecnologie, guadagno il pane quotidiano scrivendo fiumi di funzioni, tonnellate di script, sciami di variabili: insomma un infinità di codice! Amante dei viaggi e del viaggio, scompongo le mie esperienze lontano da casa in complesse logiche procedurali e in stupendi design. Ancora in cerca del tag giusto per descrivere la mia vita.

Altri articoli scritti da

Articoli correlati

Potresti essere interessato anche ai seguenti articoli:

2 commenti

Trackback e pingback

Non ci sono trackback e pingback disponibili per questo articolo