Nada es el subtipo de todo, lo que es en cierto modo la parte mostrador de cualquier, que es el supertipo de todo. No se puede instanciar nada, nunca mantendrá un objeto Nothing. Hay dos situaciones (yo sepa) que nada es realmente útil:
- Una función que no vuelve nunca (en contraste con una función que no devuelve ningún valor útil , que utilizaría la unidad en su lugar), el cual ocurre para bucles infinitos, bloqueo infinito, lanzando siempre una excepción o saliendo de la aplicación
- Como una forma de especificar el tipo de Contenedores vacíos, ej. Nada o nada. En Java, no puede tener un solo objeto Nil para una lista inmutable genérica sin casting u otros trucos: si desea crear una Lista de fechas, incluso el elemento vacío debe tener el tipo correcto, que debe ser un subtipo de Fecha. Como fecha y p. Entero no comparte un subtipo común en Java, no puede crear una instancia Nil sin trucos, a pesar de que su Nil ni siquiera tiene ningún valor. Ahora Scala tiene este subtipo común para todos los objetos, por lo que puede definir Nil como
object Nil extends List[Nothing]
, y puede usarlo para iniciar cualquier Lista que desee.
A su segunda pregunta: Sí, eso sería útil. Supongo que ya hay un interruptor de compilación para activar estas advertencias, pero no estoy seguro.
Una respuesta correcta a mi pregunta poco clara, lo suficientemente buena por ahora. :) –