Tipo annullabile - Nullable type
I tipi nullable sono una caratteristica di alcuni linguaggi di programmazione che consentono di impostare il valore sul valore speciale NULL invece dei soliti possibili valori del tipo di dati . Nei linguaggi tipizzati staticamente, un tipo nullable è un tipo di opzione , mentre nei linguaggi tipizzati dinamicamente (dove i valori hanno tipi, ma le variabili no), il comportamento equivalente è fornito da un singolo valore null.
NULL viene spesso utilizzato per rappresentare un valore mancante o non valido, ad esempio da una funzione che non è riuscita a restituire o un campo mancante in un database, come in NULL in SQL .
I tipi primitivi come interi e booleani in genere non possono essere null, ma anche i corrispondenti tipi nullable (rispettivamente interi nullable e boolean nullable) possono assumere il valore NULL.
Esempio
Una variabile intera può rappresentare numeri interi, ma 0 (zero) è un caso speciale perché 0 in molti linguaggi di programmazione può significare "falso". Anche questo non ci dà l'idea di dire che la variabile è vuota, una necessità per la quale si verifica in molte circostanze. Questa esigenza può essere soddisfatta con un tipo nullable. Nei linguaggi di programmazione come C# 2.0, un intero nullable, ad esempio, può essere dichiarato da un punto interrogativo (int? x). Nei linguaggi di programmazione come C# 1.0, i tipi nullable possono essere definiti da una libreria esterna come nuovi tipi (es. NullableInteger, NullableBoolean).
Una variabile booleana rende l'effetto più chiaro. I suoi valori possono essere "true" o "false", mentre un booleano nullable può anche contenere una rappresentazione per "indeciso". Tuttavia, l'interpretazione o il trattamento di un'operazione logica che coinvolge tale variabile dipende dalla lingua.
Rispetto ai puntatori nulli
Al contrario, i puntatori agli oggetti possono essere impostati su NULL per impostazione predefinita nella maggior parte dei linguaggi comuni, il che significa che il puntatore o il riferimento non punta a nulla, che non viene assegnato alcun oggetto (la variabile non punta a nessun oggetto). I riferimenti annullabili sono stati inventati da CAR Hoare nel 1965 come parte del linguaggio Algol W. Hoare in seguito descrisse la sua invenzione come un "errore miliardario". Questo perché i puntatori all'oggetto che possono essere NULL richiedono all'utente di controllare il puntatore prima di utilizzarlo e richiedono un codice specifico per gestire il caso in cui il puntatore all'oggetto è NULL.
Java ha classi che corrispondono a valori scalari, come Integer, Boolean e Float. In combinazione con l' autoboxing (conversione automatica basata sull'utilizzo tra oggetto e valore), ciò consente effettivamente variabili nullable per i valori scalari.
Rispetto ai tipi di opzioni
Le implementazioni di tipo nullable in genere aderiscono al modello di oggetto null .
Esiste un concetto più generale e formale che estende il concetto di tipo nullable, proviene da option types , che impongono la gestione esplicita del caso eccezionale. Le implementazioni del tipo di opzione di solito aderiscono al modello Caso speciale.
Supporto linguistico
I seguenti linguaggi di programmazione supportano i tipi nullable.
Le lingue digitate in modo statico con supporto null nativo includono:
Le lingue tipizzate in modo statico con supporto null della libreria includono:
- C# (dalla versione 2)
- VB.NET
- Java (dalla versione 8)
- Scala
- ossigeno
- F#
- Linguaggi CLI tipizzati staticamente
Le lingue digitate dinamicamente con null includono:
-
Le variabili scalari Perl sono predefinite
undefe possono essere impostate suundef. - PHP con tipo NULL e metodo is_null(), tipo nullable nativo nella versione 7.1
-
Python ha il
Nonevalore. -
Julia ha il
nothingvalore (che è di tipoNothing) e l'Union{T, Nothing}idioma di tipo. - Rubino con valore zero e tipo NilClass.
-
JavaScript ha un
nullvalore