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:

Le lingue digitate dinamicamente con null includono:

  • Le variabili scalari Perl sono predefinite undefe possono essere impostate su undef.
  • 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 tipo Nothing) e l' Union{T, Nothing}idioma di tipo.
  • Rubino con valore zero e tipo NilClass.
  • JavaScript ha un nullvalore

Guarda anche

Riferimenti