Подтвердить что ты не робот

Вы использовали boost:: tribool в реальной работе?

tribool поражает меня как один из самых странных уголков Boost. Я вижу, как у него есть удобства по сравнению с использованием перечисления, но перечисление также может быть легко расширено, представляя более трех состояний.

В каких реальных мирах вы использовали трибулу?

4b9b3361

Ответ 1

Хотя я не использовал С++ и, следовательно, увеличил, я довольно широко использовал переменные трех состояний в сетевом приложении, где мне нужно сохранить состояние как true/false/pending.

Ответ 2

Дополнительное состояние в любом типе значений может быть чрезвычайно ценным. Это позволяет избежать использования "магических чисел" или дополнительных флагов, чтобы определить, является ли значение переменной "возможно" или "неизвестно".

Вместо true или false состояние a tribool равно true, false или indeterminate.

Скажем, у вас есть база данных, содержащая список customers и их dateOfBirth. Таким образом, вы пишете функцию по строкам:

tribool IsCustomerAdult(customerName);

Функция возвращает:

`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).

Очень полезно.

Ответ 3

Я думаю, что дополнительная выгода - это не только третье значение, но и то, что вы можете легко использовать 3-значную логику!

Например:

(true && indeterminate) == indeterminate
(true || indeterminate) == true

SQL реализует такую ​​логику.

Ответ 4

Я видел многочисленные примеры двух булевых элементов, которые используются для представления трех возможных состояний, явно или иначе, при этом четвертое состояние считается молчаливым. По крайней мере в двух случаях я изменил такие конструкции, чтобы использовать tribool, так как мы начали использовать boost.

Ответ 5

Я большой поклонник библиотеки Boost и начал использовать ее в компании, с которой я с тех пор ушел. После того, как я стал активно использовать библиотеку boost в нашем проекте, я наткнулся на tribool и рассматривал возможность использования для некоторых алгоритмов "Fuzzy Logic", нуждающихся в улучшениях.

Я ушел, прежде чем у меня появилась возможность войти в него, но, помимо примера "Fuzzy Logic", другие модули в системе имели компоненты с таким видом состояния, которое сейчас рассматривается, я, вероятно, в конечном итоге использовал бы tribool в приличный объем кода, если я все еще был в компании.

-bn

Ответ 7

Я думаю, что это очень полезно для языкового формования, такого как приложения OCR и синтеза речи, потому что, как вы знаете, человеческие языки неоднозначны и у них много промежуточных статусов

поиск предисловия для улучшения существующих технологий с использованием tribool