"number += 1"可以解释intuitively/mnemonically吗?
Can "number += 1" be explained intuitively/mnemonically?
之前的研究
在多种语言(perl、python、php 等)中有 <value> += <increment>
运算符**,它通过添加 <increment>
到它。这可以在 for 循环中使用,每次迭代都会将 <increment>
累加到 <value>
。这样就不必更明确地(冗长地)键入:<value> = <value> + <increment>
.
这个运算符的问题是人们经常忘记它是 +=
还是 =+
。我经常发现我后来以错误的方式输入了它,这是一种艰难的方式。
我以为我最终会在 this PHP tutorial (01:35) 中学习直觉,但他摸索着。
问题
是否有一种直观的 "in plain english" 方式来解释为什么它是 +=
而不是 =+
或者它是否是从前任意设定的某种约定?
如果对上面的"Yes",那么这种直观的解释为什么是+=
的方式是什么?
** 请在评论中告诉我这个运算符的正式名称。
我不知道这背后的历史,但我一直认为它是
+="add it first, assign it next"。因此,如果您处于从左到右的阅读文化(英语)中,那么这是有道理的,因为先添加,然后再分配。
出于非常充分的技术原因,请参阅 Sneftel 的回答。
将非等号放在等号之前可以减少歧义:a-=b
只能表示 "Decrement a
by b
",但 a=-b
也可能表示 "Set a
to the negated value of b
"。
这在技术上不会是模棱两可的,因为 C 解析规则明确表示令牌消耗是贪婪的(也就是说,如果 =-
是一个运算符,解析器总是倾向于将其解析为 =-
而不是 = -
),但从可读性的角度来看,它显然是模棱两可的。
之前的研究
在多种语言(perl、python、php 等)中有 <value> += <increment>
运算符**,它通过添加 <increment>
到它。这可以在 for 循环中使用,每次迭代都会将 <increment>
累加到 <value>
。这样就不必更明确地(冗长地)键入:<value> = <value> + <increment>
.
这个运算符的问题是人们经常忘记它是 +=
还是 =+
。我经常发现我后来以错误的方式输入了它,这是一种艰难的方式。
我以为我最终会在 this PHP tutorial (01:35) 中学习直觉,但他摸索着。
问题
是否有一种直观的 "in plain english" 方式来解释为什么它是
+=
而不是=+
或者它是否是从前任意设定的某种约定?如果对上面的"Yes",那么这种直观的解释为什么是
+=
的方式是什么?
** 请在评论中告诉我这个运算符的正式名称。
我不知道这背后的历史,但我一直认为它是
+="add it first, assign it next"。因此,如果您处于从左到右的阅读文化(英语)中,那么这是有道理的,因为先添加,然后再分配。
出于非常充分的技术原因,请参阅 Sneftel 的回答。
将非等号放在等号之前可以减少歧义:a-=b
只能表示 "Decrement a
by b
",但 a=-b
也可能表示 "Set a
to the negated value of b
"。
这在技术上不会是模棱两可的,因为 C 解析规则明确表示令牌消耗是贪婪的(也就是说,如果 =-
是一个运算符,解析器总是倾向于将其解析为 =-
而不是 = -
),但从可读性的角度来看,它显然是模棱两可的。