Às vezes, tenho uma função que deve retornar verdadeira ou falsa. Mas, às vezes, três valores possíveis fariam mais sentido.
Em alguns idiomas, esses casos seriam tratados com números inteiros ou com exceções.
Por exemplo, você deseja lidar com a idade de um usuário se ele tiver mais de 18 anos de idade. E você tem uma função como esta.
if(user.isAdult(country_code)){
//Go On
}else{
// Block access or do nothing
}
Mas, em alguns casos, dependendo da forma como seu aplicativo é criado, pude ver casos em que o campo de aniversário está incompleto. Então essa função deve retornar algo indeterminado.
switch(user.isAdult()){
case true:
// go on
break;
case undetermined:
//Inform user birthday is incomplete
case false:
//Block access
}
Como eu disse, podemos lidar com isso com Exceptions e Int, mas acho muito sexy ter uma verdadeira, falsa e indeterminada incorporada no idioma, em vez de usar algumas constantes definidas em casa.