我正在尝试创建一个由三个较小条件组成的复杂条件,用于while循环。我总是想进入循环,除非同时满足所有三个条件。我现在的方式,如果只有其中一个满足,循环退出。我希望它只在他们同时见面时退出。这就是我所拥有的:
INSERT INTO layer (geom) VALUES (ST_Force2D(ST_Transform(ST_ForceRHR(ST_GeomFromText('POLYGON((4832654.676302 7570323.2813639, 4810946.560269 7597840.6115465, 4836629.4017728 7629944.1634263, 4886772.0923279 7629944.1634263, 4902059.4979849 7591725.6492837, 4864452.4800686 7553507.1351411, 4832654.676302 7570323.2813639),(4845190.3489408 7589891.1606049, 4855585.7847875 7610376.2841853, 4876988.1527074 7604567.0700356, 4874847.9159154 7588362.4200392, 4858031.7696927 7575520.9992872, 4845190.3489408 7589891.1606049))', 3857)),998997)));
所以,如果a是1,b是2,c是5,我不想进入循环。 但是如果a是2,b是3,c是5,我做想要进入循环,但这不是我的代码所发生的事情。
我做错了什么?
答案 0 :(得分:3)
如果我理解你想说的话你希望while循环在a = 1,b = 2和c = 5的特定场景中继续除之外(与之相反)其中一个人有这个价值。)
因此,您尝试转发的正确陈述是“在(a == 1&& b == 2&& c == 5) false 时继续”即
while !(a==1 && b==2 && c==5)
% do stuff
endwhile
请注意,您所写的内容并不等同。 看看De Morgan's laws。基本上他们说:
- 不(A 和 B 和 C)=(不 A) 或 (不 B) 或 ( 不 C)
- 不(A 或 B 或 C)=(不 A) 和 (不 B) 和 ( 不 C)
醇>
因此(a!=1 && b!=2 && c!=5)
与!(a==1 && b == 2 && c==5)
不同
相反,它与!(a==1 || b == 2 || c==5)
相同
while true % i.e. loop forever
if a==1 && b==2 && c==5
break; % i.e. exit loop if this condition is true
end
% do stuff
end