Torna al blog

Una panoramica dei tipi di dati in Ruby

Una panoramica dei tipi di dati in Ruby

Ruby è un noto linguaggio di programmazione. Mira a migliorare la semplicità e la produttività. È anche un linguaggio di programmazione completamente orientato agli oggetti. Inoltre, Ruby è dotato di una sintassi elegante, naturale da leggere e facile da scrivere.

Qualsiasi programmazione richiede la gestione di vari tipi di dati. Un tipo di dati descrive una classe specifica di dati. Indica alla macchina come gestire i dati nel programma. I tipi di dati sono fondamentali per determinare cosa si può fare con i dati (comprese le operazioni che possono essere eseguite). In questo tutorial, andremo a approfondire i tipi di dati disponibili in Ruby. Esploreremo anche la tipizzazione dinamica. Utilizzando questa funzionalità, Ruby può determinare automaticamente il tipo di dati di una variabile senza dichiararla esplicitamente. Cominciamo!

Prerequisiti

Per esercitarsi e implementare i passaggi illustrati in questa guida, saranno necessari i seguenti componenti:

Tipi di dati in Ruby

Ruby include tutti i tipi di dati comuni che si incontrano in qualsiasi linguaggio di programmazione: interi, float, stringhe, array, simboli, hash, ecc. Successivamente, forniremo una panoramica di come lavorare con i vari tipi di dati di Ruby.

Passo 1 – Interi

Similmente alla matematica, gli interi nella programmazione informatica sono numeri interi. Il valore può essere positivo, negativo o 0. L'intervallo di valori è il seguente:

È ora di provare gli interi in Ruby. Il primo esempio consiste nello stampare un semplice intero sullo schermo:

Data Types in Ruby 1

Successivamente, lavoreremo con una variabile intera. Qui, la variabile sample_int contiene un valore intero (99) e la funzione print stampa il valore della variabile sullo schermo:

Data Types in Ruby 2

Possiamo anche fare calcoli matematici con gli interi. Il seguente esempio mostra una semplice somma di due numeri interi:

Quando lavoriamo con numeri grandi, spesso usiamo le virgole (,) per facilitarne la lettura. Ad esempio, un milione (1000000) viene scritto come 1,000,000 per una migliore leggibilità. Sebbene l'uso delle virgole sia vietato, Ruby consente l'uso di trattini bassi ( _) come delimitatore. Dai un'occhiata al seguente esempio:

Data Types in Ruby 3

L'uso dei trattini bassi migliora la leggibilità del codice, specialmente quando si ha a che fare con grandi valori interi.

Passo 2 – Numeri a virgola mobile

Un numero a virgola mobile (o float in breve) rappresenta un numero reale. Similmente alla definizione matematica, i numeri reali possono essere razionali o irrazionali. In Ruby, un float è fondamentalmente un numero contenente un punto decimale.

Proviamo a stampare un valore float sullo schermo:

Il prossimo esempio mostra la dichiarazione di una variabile float:

Possiamo anche eseguire varie operazioni matematiche sui valori e sulle variabili float. Il seguente esempio mostra una semplice somma di due numeri float:

E se sommassimo un float e un intero? Il valore risultante sarà un float. Nel seguente esempio, nonostante 55.0 sia un numero intero, viene trattato come un float:

Passo 3 – Booleani

I booleani rappresentano i valori di verità del ramo logico della matematica. In Ruby, i tipi di dati booleani sono rappresentati da due valori: true e false:

  • Maggiore di

    • 100 > 99: true

    • 99 > 100: false

  • Minore di

    • 500 < 999: true

    • 999 < 500: false

  • Uguale

    • 10 == 10: true

    • 9 == 99: false

Similmente ai numeri, possiamo anche memorizzare un true o false valore in una variabile. Il seguente esempio dimostra questa funzionalità:

Passo 4 – Stringhe

In programmazione, una stringa è rappresentata come una sequenza di caratteri (lettere, numeri e simboli). In Ruby, le stringhe esistono all'interno di virgolette singole ( ') o virgolette doppie ( "). Abbiamo già trattato in dettaglio l'uso delle stringhe in Ruby, quindi questa sarà una sezione breve.

Il seguente esempio è un semplice programma hello world in Ruby:

Possiamo anche memorizzare le stringhe nelle variabili. Il seguente esempio incorpora anche la concatenazione di stringhe:

Data Types in Ruby 4

Passo 5 – Array

Un array è una struttura dati che può memorizzare una collezione di dimensioni fisse di elementi dello stesso tipo di dati. Può anche essere concettualizzato come una collezione di variabili dello stesso tipo di dati. È’ una delle strutture dati più fondamentali nella maggior parte dei linguaggi di programmazione moderni.

In Ruby, un array è definito come segue:

È’ possibile creare un array di qualsiasi altro tipo di dati di cui abbiamo discusso finora (interi, float e stringhe). Ecco alcuni esempi:

  • Interi: [-5, 0, 5]

  • Float: [-9.99, -6.99, -3.99, 0, 3.99]

  • Stringhe: [“the”, “quick”, “brown”, “fox”]

Il seguente esempio implementa tutti questi tipi di array:

Data Types in Ruby 5

Nota che quando la funzione print incontra un array, stampa l'intero array sullo schermo. Per maggiore comodità, incontrerai spesso gli array come variabili. Aggiorniamo il codice:

Data Types in Ruby 6

Data Types in Ruby 7

Ora possiamo lavorare con i singoli elementi degli array:

Data Types in Ruby 7

Nota che in Ruby, il valore dell'indice degli array inizia con 0.

Per comodità, gli array in Ruby sono dotati dei metodi .first e .last che stampano il primo e l'ultimo elemento:

Data Types in Ruby 8

In Ruby, gli array hanno un'altra caratteristica interessante. Possono contenere diversi tipi di dati contemporaneamente. Ad esempio, è possibile memorizzare stringhe, simboli e persino altri array:

Data Types in Ruby 9

Passo 6 – Simboli

In Ruby, un simbolo è un tipo di dati speciale che si comporta come un’etichetta o un identificatore. I simboli sono immutabili, il che significa che non possono essere modificati. I simboli appaiono come se si dichiarassero variabili senza alcun valore.

Ecco un esempio di simbolo:

In genere, i simboli vengono utilizzati per identificare qualcosa di importante. Per altre situazioni, tuttavia, le stringhe sono più che sufficienti.

Ruby, essendo un linguaggio orientato agli oggetti, tratta tutto come un oggetto (comprese le stringhe) con la sua posizione di memoria univoca, anche se le stringhe sono identiche. Tuttavia, quando si fa riferimento a un simbolo, si tratta dello stesso oggetto in qualsiasi punto del programma, della stessa posizione di memoria.

Passo 7 – Hash

Un hash è una raccolta di chiavi e valori simile a un dizionario. Spesso, gli hash vengono utilizzati per memorizzare dati correlati, ad esempio informazioni su un utente.

Ecco un rapido esempio di hash. Abbiamo creato un hash user_info contenente il nome utente e la password di un utente:

Data Types in Ruby hashing in ruby

Per recuperare i valori di una coppia chiave-valore, dobbiamo usare la chiave. Il seguente esempio dimostra questo processo:

Data Types in Ruby retrieve value using key

Ruby consente anche di definire un hash utilizzando sintassi leggermente diverse ( : invece di =>):

Data Types in Ruby retrieving value using key

Questa struttura sintattica è simile alla sintassi utilizzata in altri linguaggi, ad esempio, JavaScript. In questa struttura sintattica, le chiavi sono definite come simboli. Ecco perché invece di usare "username", stiamo usando: username per accedere al valore.

Tipizzazione dinamica

Potresti aver già notato che quando si dichiara una variabile, non dobbiamo assegnare esplicitamente un tipo di dati. Al contrario, il valore della variabile determina il tipo di dati. Ruby utilizza la dynamic typing in cui il controllo dei tipi viene eseguito a runtime. Al contrario, i tipi di dati vengono determinati durante la compilazione nei linguaggi di programmazione a static typing (C/C++, ad esempio).

Nel seguente esempio, tutti i valori assegnati alla variabile dyn_var sono validi:

Nei linguaggi a tipizzazione dinamica, siamo liberi di riutilizzare una variabile esistente per memorizzare diversi tipi di dati. Qui, l'esempio precedente viene aggiornato per dimostrare questo fenomeno:

dynamically typed variables

Come dimostra questo esempio, ogni volta che viene assegnato un nuovo valore, questo cambia il tipo di dati di dyn_var al volo. È utile quando si converte un tipo di dati in un altro. Il seguente esempio lo dimostra:

get input and cast

Qui,

  • Poiché gli input da tastiera sono stringhe, length all’inizio è una stringa.

  • Poiché il valore desiderato è un float, stiamo convertendo il valore stringa in float utilizzando il metodo to_f.

  • A causa del cambio di valore, length viene assegnato il tipo di dati float. Questo è ciò che vediamo quando stampiamo il suo valore sullo schermo.

Cosa succederebbe se provassimo a mescolare due tipi di dati diversi? Ruby genererà un errore. Dai un’occhiata:

mixing two datatypes

Identificazione del tipo di dati

In Ruby, tutto viene trattato come un oggetto. Ogni oggetto in Ruby è dotato del metodo class. Quando viene chiamato, questo metodo indica qual è il tipo di dati dell'origine. Ecco alcuni esempi di utilizzo del class metodo:

get classes name

Un altro modo per conoscere il tipo di dati consiste nell'utilizzare il kind_of? metodo. Verifica il tipo di dati dell'oggetto rispetto al tipo di dati richiesto e restituisce un valore booleano. Dai un'occhiata al seguente esempio:

check datatype

Allo stesso modo, c’è un altro metodo is_a? che confronta il tipo di dati e restituisce un valore booleano. L'unica differenza è l'etichetta del metodo. Tuttavia, potrebbe essere preferibile perché è un po’ più facile da leggere e comprendere per gli sviluppatori. Aggiorna l'esempio precedente con is_a?:

check datatype

Considerazioni finali

Lavorare con qualsiasi linguaggio di programmazione richiede una buona comprensione dei tipi di dati che supporta. In questa guida abbiamo esplorato i tipi di dati più comuni utilizzati nella programmazione Ruby. Abbiamo discusso e mostrato interi, float, stringhe, simboli, booleani e hash (con esempi).

Dai un'occhiata ad altri tutorial del nostro blog che ti aiuteranno a esplorare Ruby:

Buona programmazione!

author

Preslav Dobrev

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.