Niente è il sottotipo di tutto, quindi è in un certo senso la contro parte di qualsiasi, che è il super-tipo di tutto. Nulla non può essere istanziato, non potrai mai tenere un oggetto Nothing. Ci sono due situazioni (io sappia) in cui nulla è effettivamente utile:
- Una funzione che non restituisce mai (a differenza di una funzione che non restituisce alcun utile valore, che utilizzerebbe Unità invece), che succede per loop infiniti, blocco infinito, lancio sempre di un'eccezione o uscita dall'applicazione
- Come modo per specificare il tipo di contenitori vuoti, ad es. Nullo o Nessuno. In Java, non è possibile avere un singolo oggetto Nil per un elenco immutabile generico senza casting o altri trucchi: se si desidera creare un elenco di date, anche l'elemento vuoto deve avere il tipo giusto, che deve essere un sottotipo di Data. Come data e ad es. I numeri interi non condividono un sottotipo comune in Java, non è possibile creare una tale istanza Nil senza trucchi, nonostante il fatto che il tuo Nil non contenga alcun valore. Ora Scala ha questo sottotipo comune per tutti gli oggetti, quindi puoi definire Nil come
object Nil extends List[Nothing]
, e puoi usarlo per avviare qualsiasi Lista che ti piace.
Alla tua seconda domanda: Sì, sarebbe utile. Immagino che ci sia già un interruttore del compilatore per attivare questi avvisi, ma non ne sono sicuro.
Una risposta corretta alla mia domanda poco chiara, abbastanza buona per ora. :) –