在许多语言中,a = a + b 可以写成 a += b 在数值运算的情况下,a + b 与 b + a 相同,因此单个复合运算符就足够了。
此外, a = a - b 可以写成 a -=b 。
但是,ab 不等于 ba。因此,复合赋值运算符不适用于 a = b - a
那么,是否有用于操作a = b op a的复合赋值运算符(其中op可以是 +、-、*、/、%,并且顺序很重要)?
[非交换运算]
在许多语言中,a = a + b 可以写成 a += b 在数值运算的情况下,a + b 与 b + a 相同,因此单个复合运算符就足够了。
此外, a = a - b 可以写成 a -=b 。
但是,ab 不等于 ba。因此,复合赋值运算符不适用于 a = b - a
那么,是否有用于操作a = b op a的复合赋值运算符(其中op可以是 +、-、*、/、%,并且顺序很重要)?
[非交换运算]
不,没有 的简写符号a = b + a
。如果你需要为字符串做很多事情a = b + a
,你最好建立一个像这样的列表:
lst = []
...
lst.append("a")
lst.append("bb")
lst.append("ccc")
lst.append("dddd")
...
lst.reverse()
return ''.join(lst) # "ddddcccbba"
不,那里没有。
我怀疑这个速记来自汇编语言,ADD
指令正是这样做的——接受两个操作数,进行加法并将其存储到第一个操作数。
我想说人们习惯于这样思考,所以这种模式也出现在 C 语言中作为a += b
速记。其他语言从 C.
a = a + b
我认为拥有或不拥有或没有特别的理由a = b + a
。我认为编程中更经常需要这两个。原因是历史的。这与我们使用 QWERTY 键盘布局而不是其他键盘布局的原因相同。
更新:看到这个,这是一个神话,因为 C 是基于 B 语言而不是来自汇编语言。起源尚不清楚。
+=
。+=
某种操作而不是a = b + a
,因此他们对不存在速记并且没有要求的事实感到满意。最好的解决方案是只写a = b + a
,因为乍一看它是清晰易读的。出于同样的原因(可读性)(更新:谁知道?) Python 不提供a++
已知的 C 和其他语言。你必须输入a += 1
. 对于+=
编程初学者来说,速记的可读性也不是很好,但至少可以以某种方式猜出它是关于什么的。它是传统、懒惰和可读性之间的妥协。
如果没有传统,可读性应该会胜出,至少在 Python 中是这样。因此,一个人应该清楚地多写几个字符,而不是寻找速记。对于a = b + a
.
如果要连接更多字符串,则应注意.join()
性能问题。
我不知道任何语言都内置了这样的快捷方式,但有些语言允许你创建一个。
例如,在 Scala 中,您基本上可以定义自己的运算符。