Se si proviene da un linguaggio simile a C (C, C++, Java, ecc.), È possibile considerare l'unità come void
. È il tipo che ritorni quando non vuoi restituire nulla.
I teorici di tipo faranno notare che l'unità non è come nulla, perché l'unità ha esattamente 1 valore mentre il vuoto ha valori 0.
In pratica, la quantità di informazioni che è possibile memorizzare in entrambi i tipi è la stessa (0 bit) anche se le lingue che utilizzano l'unità tendono ad essere più piacevoli da utilizzare perché è possibile trattarle come qualsiasi altro valore.
È possibile memorizzarlo in una variabile, struttura, raccolta o in qualsiasi altro punto in cui è possibile memorizzare un valore. Puoi passare come argomento o restituirlo come risultato. È possibile creare un riferimento ad esso. Etc.
Quindi, quando è utile? Principalmente quando non ti interessa quale tipo di valore hai a che fare. Significa che puoi scrivere codice polimorfico/generico senza preoccuparti se il valore con cui stai trattando contiene effettivamente delle informazioni. Vale a dire, non c'è bisogno di casi particolari per se si sta memorizzando dati reali o ()
.
Un esempio di dove viene utilizzato è in HashSet
. A è attualmente implementato come a thin wrapper around HashMap<T,()>
. (Una mappa dal tipo generico T
a ()
)
È più simile a "vuoto" in lingue simili a C. Per quanto ne so, tutto è un'espressione in ruggine, quindi '()' è il valore restituito da qualcosa che viene eseguito solo per i suoi effetti. – Lee
Puoi creare i tuoi tipi a dimensione zero, proprio come '()' dicendo 'struct MyNewZeroSizeType;' Può essere utile ("tipi di marcatori"!) – bluss
Non sembra come 'null' in java perché se tu dì che restituisci un 'int' non puoi restituire'() 'al posto di esso. – JustGage