问题标签 [assignment-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
13092 浏览

javascript - Javascript 字符串赋值运算符

为什么我可以+=在字符串上使用,但我不能-=在其上使用?

例如...

0 投票
5 回答
46601 浏览

php - PHP 中的引用赋值运算符 =&

PHP中的=&(equals-&ersand) 赋值运算符有什么作用?

是否已弃用?

0 投票
4 回答
5686 浏览

c++ - 具有引用成员的内部类中的默认赋值运算符

我遇到了一个我不明白的问题,我希望这里有人可以提供一些见解。简化代码如下(原始代码是自定义队列/队列迭代器实现):

这在编译时会给我以下错误:

我可以通过使用两个单独的 C 变量来解决这个问题,因为它们应该是独立的“C”对象,但这只会隐藏问题(我仍然不明白为什么我不能这样做)。

我认为原因是无法复制引用,但我不明白为什么。我需要提供自己的赋值运算符和复制构造函数吗?

0 投票
8 回答
8045 浏览

scala - Scala 赋值评估为 Unit 而不是赋值的动机是什么?

Scala 赋值评估为 Unit 而不是赋值的动机是什么?

I/O 编程中的一个常见模式是执行以下操作:

但这在 Scala 中是不可能的,因为......

.. 返回 Unit,而不是 bytesRead 的新值。

离开函数式语言似乎是一件有趣的事情。我想知道为什么这样做?

0 投票
5 回答
502 浏览

c - 这是错的还是我错过了什么(int count = 10, x;)

在我正在阅读的书中遇到了这个例子,它对我来说根本没有意义,我可能遗漏了一些东西,但似乎你用值'10'分配了计数,然后是值'x',这甚至不是一个整数。只是想知道这是否是有效的语法。

这本书是这样说的:

变量 count 和 x 以正常方式声明为整数变量。在下一行,变量 intPtr 被声明为“指向 int 的指针”类型。请注意,这两行声明可以合并为一行:

这是它取自的程序:

0 投票
3 回答
294 浏览

c++ - 复制 ctor 和赋值运算符中是否存在语义略有不同的问题?

请看下面的代码,告诉我以后会不会出现问题,如果会,如何避免。

简而言之,我希望复制构造函数创建对象的精确副本,包括其(数据库)ID 字段。另一方面,当我分配时,我只想复制数据字段。但我有一些担忧,因为通常复制 ctor 和 operator= 具有相同的语义。

id 字段仅供 Note 及其朋友使用。对于所有其他客户端,赋值运算符确实创建了一个精确的副本。用例:当我想编辑笔记时,我使用 copy ctor 创建一个副本,对其进行编辑,然后在管理笔记的 Notebook 类上调用 save:

另一方面,当我想创建一个与现有笔记具有相同内容的全新笔记时,我可以这样做:

这种方法合理吗?如果不是,请指出可能的负面后果是什么!非常感谢!

0 投票
4 回答
838 浏览

php - 在这种情况下,为什么 PHP 赋值运算符充当引用赋值?

我有一些代码在 PHP 4 和 PHP 5 之间的行为似乎有所不同。下面的代码:

以前,在 PHP 4 中,上面对 $foo2 的赋值会将 $foo2 重置为 $this 最初设置的值。在这种情况下,我希望它被设置为具有空 $arr 成员的 CFoo。但是,$foo2 对 $this 的赋值是作为引用赋值。Foo2 是这个的别名。因此,当我在 foo2 上调用“AddToArray”时,$this 的 $arr 也被附加到。因此,当我将 foo2 重新分配回 this 时,我并没有得到 this 的初始值,而是得到了一个自赋值。

这种行为在 PHP 5 中改变了吗?我能做些什么来强制 foo2 复制这个?

0 投票
1 回答
167 浏览

equals - 是否有使用“==”作为比较运算符的 BASIC 方言?

任何在 BASIC 上长大,后来改用另一种语言的人,都很难习惯用“(a == b)”而不是“(a = b)”来测试相等性。

是否存在使用“==”运算符进行比较而不是重载“=”进行分配和比较的 BASIC 方言?或者 - 也许这正在扩展它 - 是否有一个实现可以很容易地使用这种行为(更改解析器识别的令牌?)

这可以是 DOS/Windows/Linux 实现,并且不必非常全功能。(我将其用于教学目的。)

0 投票
2 回答
98167 浏览

r - R中的`=`和`<-`有什么区别?

我正在使用 R 2.8.1,可以同时使用=<-作为变量赋值运算符。他们之间有什么区别?我应该使用哪一个?

0 投票
11 回答
17448 浏览

java - 为什么 Java 没有条件与和条件或运算符的复合赋值版本?(&&=, ||=)

所以对于布尔值的二元运算符,Java 有&, |, ^,&&||.

让我们在这里简要总结一下他们所做的事情:

对于&,结果值是true如果两个操作数值都是true; 否则,结果为false

对于|,结果值是false如果两个操作数值都是false; 否则,结果为true

对于^,结果值是true如果操作数值不同;否则,结果为false

&&运算符类似于但仅当&其左侧操作数的值为 时才计算其右侧操作数true

||运算符类似于,但仅当其|左侧操作数的值为 时才计算其右侧操作数false

现在,在所有 5 个中,其中 3 个具有复合赋值版本,|=&=^=。所以我的问题很明显:为什么 Java 不提供&&=||=?我发现我需要的比我需要的多&=,而且|=

而且我不认为“因为它太长”是一个好的答案,因为 Java 有>>>=. 这种遗漏一定有更好的理由。


15.26 赋值运算符

有12个赋值运算符;[...]= *= /= %= += -= <<= >>= >>>= &= ^= |=


有人评论说,如果&&=||=被实施,那么它将是唯一不首先评估右手边的运算符。我认为复合赋值运算符首先评估右手边的想法是错误的。

15.26.2 复合赋值运算符

形式的复合赋值表达式E1 op= E2等价于E1 = (T)((E1) op (E2)),其中T是 的类型E1,除了E1只计算一次。

作为证明,以下代码段抛出 a NullPointerException,而不是ArrayIndexOutOfBoundsException.