我想知道为什么Ada中没有像+=
, -=
, ++
, -=
, <<=
or x ? y : z
(not an augmented assignment ...) 这样的运算符?许多其他语言(C、C++、C#、Java、Perl)都有它们。
-- 示例(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 中的赋值运算符是
:=
而不是=
(所以+=
->+=:
)?