A veces tengo una función que debería devolver verdadero o falso. Pero a veces tres valores posibles tendrían más sentido.
En algunos idiomas, estos casos se manejarían con enteros o con excepciones.
Por ejemplo, desea controlar la edad de un usuario si es mayor de 18 años. Y tienes una función como esta.
if(user.isAdult(country_code)){
//Go On
}else{
// Block access or do nothing
}
Pero en algunos casos, dependiendo de cómo esté construida su aplicación, podría ver casos en los que el campo de cumpleaños está incompleto. Entonces esta función debería devolver algo indeterminado.
switch(user.isAdult()){
case true:
// go on
break;
case undetermined:
//Inform user birthday is incomplete
case false:
//Block access
}
Como dije, podemos manejar eso con Exceptions e Int, pero me parecería bastante sexy tener un verdadero, falso, indeterminado incrustado en el lenguaje en lugar de usar algunas constantes definidas en casa.