我有一个代码示例,不确定哪种方法是最佳使用方法。
例如我有
if (x = 1) and (y = 2) and (if abc = false then check if z = 3) then
begin
...
只检查
if x = 1
if y = 2
if abc = false check z = 3. if abc = true then dont check z = 3
我不确定我是否在解释最好但希望人们能理解的东西。
我想知道这是否可行或最好的方法。请记住,而不是示例中x,y,z和abc。我可以使用更多的东西。
我目前的结构是...我认为不可行,并认为有更好的方法,但我不确定
if (abc = false) then
begin
if (x = 1) and (y = 2) and (z = 3) then
begin
...
end
else
begin
if (x = 1) and (y = 2) then
begin
...
提前致谢
最佳答案
我认为您正在寻找or
。现在,您将检查x必须为1,y必须为2,如果abc为false,z必须为3。
如果abc = true,z仍可以为3,但不会被检查。
请注意,我只是写了abc
而不是abc = true
。由于已经是布尔值(true / false),因此可以使用。
还要注意如何使用括号对操作进行分组。总子表达式abc or (z=3)
必须返回true,总表达式才能返回true。
此外,这些术语的顺序很重要-它们从左到右进行评估。如果将术语(abc or (z=3))
替换为逻辑上等效的术语((z=3) or abc)
,则将评估z=3
。
if (x = 1) and (y = 2) and (abc or (z = 3)) then
// Your magic goes here
测试程序主体以证明顺序很重要
function z : Integer;
begin
writeln('Z being evaluated');
result := x + y;
end;
begin
x := 1;y := 2;
abc := true;
if (x=1) and (y=2) and (abc or (z=3)) then
writeln ('evaluated true')
else
writeln ('evaluated false');
writeln('done');
readln;
end.