Un estado adicional en cualquier tipo de valor puede ser extremadamente valioso. Evita el uso de "números mágicos" o indicadores adicionales para determinar si el valor de una variable es "tal vez" o "desconocido".
En lugar de true
o false
, el estado de un tribool
es true
, false
o indeterminate
.
Digamos que tiene una base de datos que contiene una lista de customers
y su dateOfBirth
. Así se escribe una función a lo largo de las líneas de:
tribool IsCustomerAdult(customerName);
La función retorna:
`true` if the customer is 18 or older;
`false` if the customer is less than 18;
`indeterminate` if the customer is not in the database
(or the dateOfBirth value is not present).
Muy útil.
Sí, las situaciones generales de asincronía o de votación parecen ser un ajuste natural para tribool. – Duck
¿Pero tu aplicación usa la misma lógica que 'boost :: tribool'? Es decir. '(bool) triValue' es' true' iff 'triValue == true'; 'triVal1 == triVal2' es' indeterminado' si alguno de los valores es 'indeterminado', etc. Sin las operaciones lógicas 'tribool' parece inútil ya que es fácil sustituirlo por una enumeración. – Ruslan