c++ - library - ¿Has usado boost:: tribool en trabajo real?
wget boost (6)
tribool me parece uno de los rincones más extraños de Boost. Veo cómo tiene algunas ventajas en comparación con el uso de una enumeración, pero una enumeración también se puede expandir fácilmente y representa más de 3 estados.
¿En qué formas del mundo real has usado tribool?
Creo que el beneficio adicional no solo es el tercer valor, sino que también puede usar fácilmente la lógica de 3 valores.
Por ejemplo:
(true && indeterminate) == indeterminate
(true || indeterminate) == true
SQL implementa dicha lógica.
Creo que es muy útil para el modelado de idiomas, como las aplicaciones OCR y la síntesis de voz, porque como saben, los lenguajes humanos son ambiguos y tienen muchos estados intermedios.
buscando un prólogo para mejorar las tecnologías actuales usando el tribool
He visto numerosos ejemplos de dos booleanos que se utilizan para representar tres estados posibles, explícitamente o no, y que el cuarto estado se supone silenciosamente imposible. En al menos dos casos, he cambiado tales construcciones para usar tribool desde que comenzamos a usar boost.
Si bien no he usado C ++, y por lo tanto, he utilizado las variables de tres estados en una aplicación de red en la que necesito almacenar el estado como verdadero / falso / pendiente.
Soy un gran fan de la biblioteca de Boost y comencé a usarla en la compañía de la que me he ido. Después de exponerme y usar la biblioteca boost en forma extensiva a lo largo de nuestro proyecto, me topé con tribool y estaba considerando usar algunos algoritmos de "lógica difusa" que necesitaban mejoras.
Me fui antes de tener la oportunidad de entrar en él, pero más allá del ejemplo de "Fuzzy Logic", otros módulos en el sistema tenían componentes de este tipo entre el estado que considerando ahora, probablemente terminaría usando tribool en una cantidad decente de Código si todavía estaba con la empresa.
-bn
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 fecha de dateOfBirth
. Entonces escribes una función a lo largo de las líneas de:
tribool IsCustomerAdult(customerName);
La función devuelve:
`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.