双布尔变量有什么用?

What's the use of double boolean variables?

我正在查看来自 API 的 JSON 数据集,我看到了这样的东西:

   "lights_on":1,
   "lights_off":0,
   "doors_locked":0,
   "doors_unlocked":1,
   "sensors_tripped":0,
   "sensors_not_tripped":1

是我一个人,还是为布尔值的两种状态设置一个变量有点傻?在此示例中,检查 lights_on 的值是否更有意义,如果 0 则必须是 false,如果 1 则必须是 true

上述 JSON 数据集的优点是什么,其中包含 truefalse 状态的变量,我应该在我的程序中使用它吗?

这只是模拟您希望 'true' 和 'false' 变量都响应的真实条件。它们的默认值都是 'false',这意味着没有做出任何决定。如果两者都设置为 'true',则做出了不合理的决定。这是确保软件正常工作的一种方法。

奇怪的是,同样的情况适用于 'door open' 或 'door closed' 的远程接触开关。通过为软件分析返回两种状态,用户知道电线没有短路,这可能会导致打开和关闭状态(不合逻辑),并且两条电线都不是错误的,这通常意味着电缆已被切断或传感器被切断不好。

这是最简单的自检形式,可确保软件或硬件状态报告的来源有效。
这将隐式用于块代码正在读取真实世界的布尔输入,下一个代码块将读取 'true' 和 'false' 标志以确保有一个有效答案。同样在现实条件下,将使用数字滤波器来确保答案在大约 1/10 秒内保持不变,具体取决于软件必须以多快的速度响应变化。

然后更多的下游代码将通过发布状态报告、发出警报、更新日志或任何数量的被认为重要的功能来采取行动。

我已经在中构建了这些多阶段线程我的几个用于测试产品的 ATE 单元。
真实世界的输入可能有噪音,软件创建的布尔值可能有错误,因此 any 歧义 MUST 在端点软件采取实际行动之前被过滤掉。