我不知道为什么有像+=
,-=
,++
,-=
,在阿达<<=
或x ? y : z
(不是增量赋值 ...)没有运营商?其他许多语言(C,C++,C#,Java,Perl)都有它们。为什么Ada中没有(增强赋值)运算符,如+ =, - =或++?
- 实施例(C/C++/...):
int a = 3;
a += 4; /* A */
// long: a = a + 4
a++; /* B */
// long: a = a + 1
a = (a > 3 ? 10 : 5); /* C */
// long: ' if a > 3 then a = 10 else a = 5'
- 实施例(ADA):
a : integer := 3;
a := a + 4; -- A --
a := a + 1; -- B --
if a > 3 then -- C --
a := 10;
else
a := 5;
end if;
(实施例没有意义 - 仅用于演示)
是因为...
- 运算符重载(但C++也有这样的机制)?
- 可读性?
- 技术原因/限制?
- 这只是一个把这些表达式缩短而不是编程所需的技巧?
- Ada中的赋值运算符是
:=
而不是=
(所以+=
- >+=:
)?
虽然这个问题似乎在提问和倡导之间划清界线,但我认为这是一个合理的问题(甚至有答案,查看理由),所以我不同意接近的决定。对于T.E.D. –
+1。尽管我支持我的回答,但我一直有兴趣查看并理解其他观点 –
+1对于泰德和布莱恩;我也想看到这个问题的其他观点... – clx