Dodatkowy stan w dowolnym typie wartości może być niezwykle cenny. Pozwala uniknąć użycia "magicznych liczb" lub dodatkowych flag, aby określić, czy wartość zmiennej to "być może" czy "nieznana".
Zamiast true
lub false
, stan z tribool
jest true
, false
lub indeterminate
.
Załóżmy, że masz bazę danych zawierającą listę customers
i ich dateOfBirth
. Więc napisać funkcję wzdłuż linii:
tribool IsCustomerAdult(customerName);
powraca funkcję:
`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).
bardzo przydatne.
Tak, ogólne sytuacje asynchroniczne lub sondowania wydają się być naturalnym rozwiązaniem dla tribooli. – Duck
Ale czy Twoja aplikacja używa tej samej logiki co 'boost :: tribool'? To znaczy. '(bool) triValue' to' prawda' iff 'triValue == true'; 'triVal1 == triVal2' to' nieokreślony' iff dowolna z wartości jest 'nieokreślona' itd.? Bez operacji logicznych 'tribool' wygląda bezużytecznie, ponieważ łatwo jest go zastąpić wyliczeniem. – Ruslan