Ruby

Preparativi

Installazione
Puoi scaricare e installare Ruby seguendo la guida ufficiale:
https://www.ruby-lang.org/en/documentation/installation/

In alternativa puoi usarlo in remoto collegandoti con Visual Studio Code al nostro server Singularity. Avrai bisogno dell'estensione Remote SSH di Code.
Dopo averla installata segui i passaggi indicati dal prof e configura una nuova connessione.
Una volta che sarai connesso, nell'angolo in basso a sinistra di Code apparirà questa indicazione, per ricordarti che stai lavorando in remoto:
Lavorare in remoto ha dei vantaggi: potrai collegarti da qualunque computer e ritrovare il tuo lavoro. Potrai inoltre beneficiare dei 128 GB di RAM e dei 32 core di Singularity!

Dopo esserti collegato, incolla queste righe nel terminale per installare rbenv, uno strumento che permette di usare più versioni diverse di Ruby:
cd /home/$USER
git clone https://github.com/rbenv/rbenv.git /home/$USER/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> /home/$USER/.bashrc
echo 'eval "$(rbenv init -)"' >> /home/$USER/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git /home/$USER/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> /home/$USER/.bashrc
exec $SHELL

Controlla che non ci siano errori nell'output dei vari comandi qui sopra.
Se tutto è andato bene dovresti vedere la versione di rbenv digitando:
rbenv -v

A questo punto installa una specifica versione di Ruby tramite rbenv:
rbenv install 3.1.2
rbenv global 3.1.2
rbenv rehash
git config --global color.ui true
rbenv rehash

Ancora una volta verifica che non ci siano messaggi di errore, dopodiché controlla la versione di Ruby installata:

Esecuzione del codice Ruby
Per tenere le cose in ordine ti suggerisco di creare all'interno della tua home di Linux una cartella dove terrai i tuoi esercizi di Ruby:

mkdir esercizi_ruby

A questo punto aprila con Code usando il menù File > Open Folder
Potrai così creare i tuoi file all'interno del pannello Explorer:

A questo punto, per vedere l'output di un programma, usa il terminale:


Debug del codice con Pry
Pry è una gem (un'estensione di Ruby) che ti permetterà di fare il debug del tuo codice.
Installala con:

Guarda questo esempio:

La riga 1 fa in modo che tu abbia a disposizione pry nel tuo programma.
Le righe 5 e 9 mettono in pausa l'esecuzione, dandoti la possibilità di andare a vedere il valore delle variabili e degli array:

Per procedere con l'esecuzione usa CTRL + D.
Come vedi Pry ti da anche un'indicazione della riga alla quale ha messo in pausa l'esecuzione.
È uno strumento semplice e potente per fare il "debug" dei tuoi programmi.

Prova a vedere come cambia il contenuto dell'array prima e dopo l'esecuzione della riga 8.

Le basi

Letterali
I letterali rappresentano valori fissi nel codice:

Molti li conosciamo già da altri linguaggi. Vediamo alcune novità...


Concatenazione di stringhe

Interpolazione di stringhe

In Ruby  è possibile costruire una stringa in questo modo:

All'interno delle parentesi graffe possiamo mettere qualunque espressione Ruby, e il suo output sarà inserito nella stringa.

Simboli

Sono preceduti dal due punti e usati per fare riferimento a qualcosa che assomiglia a una stringa, ma non dovrà essere stampato da nessuna parte... ad esempio:

nil

Indica il valore nullo.

Conversione da un tipo di dati all'altro

  • La prima riga scrive la stringa "5"
  • La seconda converte la stringa nel numero intero 5
  • La terza converte la stringa nel numero con virgola (float) 5.0

Naturalmente è possibile convertire anche i numeri in stringhe:


Metodi
I metodi permettono di incapsulare una parte di codice da utilizzare più volte in altre parti del programma, e aiutano a rendere il codice più leggibile.

Parametri



Ora il metodo saluta ha un parametro: nome.
I dati passati al metodo ("Aldo", "Paola", "Margareth") vengono chiamati argomenti.

Parametri di default

Vengono usati nel caso il metodo non riceva altri parametri:

Le parentesi sono opzionali

In Ruby le parentesi sono opzionali, per cui è possibile scrivere:

In alcuni casi sarà comunque utile usare le parentesi, per migliorare la leggibilità del codice.

Scope delle variabili

I metodi sono come dei piccoli mondi isolati dal resto del programma: al loro interno è possibile definire delle variabili con lo stesso nome di variabili esterne, come vediamo in questo esempio:

Valore restituito

Come in altri linguaggi, i metodi possono restituire un valore:



Nel caso non venga definito esplicitamente un return, Ruby restituisce comunque il valore dell'ultima espressione all'interno del metodo... quindi possiamo scrivere anche:

...ottenendo lo stesso risultato.




Controllo del flusso





Gli operatori && e || possono essere usati per combinare le condizioni

Operatore ternario

Istruzione case

Cicli








Array


Modificare gli array
















Iteratori









Hash
Gli hash associano a ogni elemento una chiave
Bob
{:nome=>"Bob", :cognome=>"Jones", :capelli=>"biondi"}

{:nome=>"Bob", :cognome=>"Jones", :capelli=>"castani"}

{:nome=>
"Bob", :cognome=>"Jones", :età=>"38", :capelli=>"castani",
 :sport=>"Basket", :film=>"Joker", :libro=>"Lo straniero"}

nome di Bob: Bob
cognome di Bob: Jones
età di Bob: 38
capelli di Bob: castani

Le chiavi possono essere anche numeri o qualunque altro tipo di dato:




[[:nome, "Bob"], [:cognome, "Jones"], [:età, "38"], [:capelli, "castani"]]

persona.keys restituisce un array con tutte le chiavi
persona.values restituisce un array con tutti i valori