在很多语言中,a = a + b可以写为+ = b 在数值运算的情况下,a + b与b + a相同,因此单个复合运算符就足够了。
此外,a = a - b可写为 - = b。
然而,a-b不等于b-a。因此,复合赋值运算符不适用于a = b - a
那么,是否有操作的复合赋值运算符 a = b op a (其中 op 可以是+, - ,*, /,%,和订单事项)?
[非交换操作]
答案 0 :(得分:4)
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"
答案 1 :(得分:3)
不,没有。
我怀疑这个简写来自汇编语言,其中 ADD
指令正是这样做 - 需要两个操作数,进行添加并将其存储到第一个。
我会说人们习惯这样思考,所以这种模式在C语言中也以 a += b
速记出现。其他语言来自C。
我认为没有特别理由拥有或不拥有 a = a + b
或a = b + a
。我认为在编程中经常需要它们中的两个。原因是历史性的。与我们使用QWERTY键盘布局而不是其他键盘布局的原因相同。
更新:See this,这是一个神话,因为C基于B语言,而不是来自汇编语言。起源不明确。
+=
比较时很少使用。+=
种操作,而不是a = b + a
,所以他们没有任何简写存在且没有请求它的事实。最好的解决方案就是编写a = b + a
,因为从第一眼开始它就清晰可读。 出于同样的原因(可读性)(更新:who knows?)Python不提供C和其他语言中已知的a++
。您必须输入a += 1
。 +=
简写对于编程初学者来说也不是非常易读,但是人们仍然可以以某种方式至少猜测是什么。它是传统,懒惰和可读性之间的妥协。
如果没有传统,可读性应该赢,至少在Python中。因此,应该清楚地写一些字符,而不是寻找速记。 a = b + a
就是这种情况。
如果要连接更多字符串,则应注意性能问题.join()
。
答案 2 :(得分:0)
我不知道任何语言内置的这种快捷方式,但有些语言可以让你创建一个。
例如,在Scala中,您基本上可以定义自己的运算符。