【发布时间】:2015-05-10 00:59:31
【问题描述】:
我有一个函数,它可以评估多个(在我的情况下为 7 个)布尔变量和条件,如果其中只有一个为真(当然其余为假),则结果为真。我有以下代码:
function GetExclusiveTrue: boolean;
begin
Result:= (
Integer(BoolVar1) +
Integer(BoolVar2) +
Integer(BoolFunc3) +
Integer(BoolVar4) +
Integer(BoolFunc5) +
Integer(BoolVar6) +
Integer(BoolVar7)) = 1;
end;
我只是想知道是否有比这更好的解决方案?
PS:我想我没有正确定义我的问题。
我正在寻找仅使用逻辑运算符的解决方案,不涉及任何强制转换。
PS2:看起来我无法正确解释我在寻找什么。我想看到一个没有迭代、选择、函数调用等的解决方案。只允许布尔运算符。为什么?我只是想知道这是否可能。寻找与上述函数提供相同结果的逻辑运算组合。
【问题讨论】:
-
我很好奇,您要解决的真正问题是什么?为什么只允许使用逻辑运算符?为什么不允许强制转换或位操作?它必须是纯德尔福吗?你如何量化“更好”?
-
当我说得更好时,我指的只是逻辑运算符。我不需要使用强制转换和按位运算符的解决方案,如您所见,我已经使用类型强制解决了该任务,我也可以使用按位运算符解决它。这是一个理论问题。是的,必须用 Delphi 编写。
-
FWIW,而不是铸造你会使用
ord()。