IF语句中"和"与"然后"之间是否存在差异

eri*_*ict 21 ada

我通过修复错误和阅读代码来学习Ada.我注意到一些if语句与"and"结合,其他语句与"然后"结合.类似地,有"或"和其他地方有"或其他".一位同事说这只是语法糖并没有区别.我想知道他是对的吗?

rai*_*7ow 26

在Ada中and then,or else所谓的"短路"形式,相应地andor运营商:

快捷方式运算符[ and then,or else]用于对布尔表达式的部分条件进行求值.永远不应该这样做以加速评估(使用现代优化编译器,它可能不会产生这种影响).正确的用法是防止评估已知引发异常的表达式.

示例(如上所述,来自wikibooks/Ada):

if Dog /= null and then G (Dog) then
   Walk (Dog);
end if;
Run Code Online (Sandbox Code Playgroud)

只有当 Dog不为空时,才会评估G(Dog).如果没有and then它,无论如何都会被评估,如果Dog确实是null,则会引发异常.

请注意,and thenor else,严格说来,不是运营商,因为他们不能超载.

我建议阅读这个wikibook,它将极大地帮助你在Ada旅程中.)