除了布尔“and”运算符之外,Ada还具有在if
条件语句中使用的and then
语句的良好特性。这允许在访问对象之前进行检查,例如检查对象是否为非空:
if Object /= null and then Object.Value > 5 then
-- do something with the value
end if;
有没有一种方法可以在不使用嵌套的if
的情况下表达出类似的行为?
除了布尔“and”运算符之外,Ada还具有在if
条件语句中使用的and then
语句的良好特性。这允许在访问对象之前进行检查,例如检查对象是否为非空:
if Object /= null and then Object.Value > 5 then
-- do something with the value
end if;
有没有一种方法可以在不使用嵌套的if
的情况下表达出类似的行为?
嗯,根据你的代码,在C++中Object
不能为NULL,因为它似乎不是一个指针。如果它是一个指针,你可以这样说:
if (Object && Object->Value > 5 ) {
// do something
}
C++中的&&
运算符执行“短路求值” - 如果左侧操作数计算结果为false,则停止计算。
.
和 ->
运算符。我相信还有其他我忘记的 :-) - user2100815&
,因为它没有短路功能,您可能更喜欢使用别名and
来避免混淆。 - SlavaObject
的访问类型变量:type Foo is access Bar;
然后 Object : Foo;
。 - egilhhObject.Value
是一个合法的解引用,相当于Object.all.Value
的简写。 - Simon Wright
and
或&&
运算符具有固定的求值顺序。 - JVApen