我通过修复错误和阅读代码来学习Ada.我注意到一些if语句与"and"结合,其他语句与"然后"结合.类似地,有"或"和其他地方有"或其他".一位同事说这只是语法糖并没有区别.我想知道他是对的吗?
rai*_*7ow 26
在Ada中and then,or else所谓的"短路"形式,相应地and和or运营商:
快捷方式运算符[
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 then和or else,严格说来,不是运营商,因为他们不能超载.
我建议阅读这个wikibook,它将极大地帮助你在Ada旅程中.)