问题标签 [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.
javascript - Javascript 字符串赋值运算符
为什么我可以+=
在字符串上使用,但我不能-=
在其上使用?
例如...
php - PHP 中的引用赋值运算符 =&
PHP中的=&
(equals-&ersand) 赋值运算符有什么作用?
是否已弃用?
c++ - 具有引用成员的内部类中的默认赋值运算符
我遇到了一个我不明白的问题,我希望这里有人可以提供一些见解。简化代码如下(原始代码是自定义队列/队列迭代器实现):
这在编译时会给我以下错误:
我可以通过使用两个单独的 C 变量来解决这个问题,因为它们应该是独立的“C”对象,但这只会隐藏问题(我仍然不明白为什么我不能这样做)。
我认为原因是无法复制引用,但我不明白为什么。我需要提供自己的赋值运算符和复制构造函数吗?
scala - Scala 赋值评估为 Unit 而不是赋值的动机是什么?
Scala 赋值评估为 Unit 而不是赋值的动机是什么?
I/O 编程中的一个常见模式是执行以下操作:
但这在 Scala 中是不可能的,因为......
.. 返回 Unit,而不是 bytesRead 的新值。
离开函数式语言似乎是一件有趣的事情。我想知道为什么这样做?
c - 这是错的还是我错过了什么(int count = 10, x;)
在我正在阅读的书中遇到了这个例子,它对我来说根本没有意义,我可能遗漏了一些东西,但似乎你用值'10'分配了计数,然后是值'x',这甚至不是一个整数。只是想知道这是否是有效的语法。
这本书是这样说的:
变量 count 和 x 以正常方式声明为整数变量。在下一行,变量 intPtr 被声明为“指向 int 的指针”类型。请注意,这两行声明可以合并为一行:
这是它取自的程序:
c++ - 复制 ctor 和赋值运算符中是否存在语义略有不同的问题?
请看下面的代码,告诉我以后会不会出现问题,如果会,如何避免。
简而言之,我希望复制构造函数创建对象的精确副本,包括其(数据库)ID 字段。另一方面,当我分配时,我只想复制数据字段。但我有一些担忧,因为通常复制 ctor 和 operator= 具有相同的语义。
id 字段仅供 Note 及其朋友使用。对于所有其他客户端,赋值运算符确实创建了一个精确的副本。用例:当我想编辑笔记时,我使用 copy ctor 创建一个副本,对其进行编辑,然后在管理笔记的 Notebook 类上调用 save:
另一方面,当我想创建一个与现有笔记具有相同内容的全新笔记时,我可以这样做:
这种方法合理吗?如果不是,请指出可能的负面后果是什么!非常感谢!
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 复制这个?
equals - 是否有使用“==”作为比较运算符的 BASIC 方言?
任何在 BASIC 上长大,后来改用另一种语言的人,都很难习惯用“(a == b)”而不是“(a = b)”来测试相等性。
是否存在使用“==”运算符进行比较而不是重载“=”进行分配和比较的 BASIC 方言?或者 - 也许这正在扩展它 - 是否有一个实现可以很容易地使用这种行为(更改解析器识别的令牌?)
这可以是 DOS/Windows/Linux 实现,并且不必非常全功能。(我将其用于教学目的。)
r - R中的`=`和`<-`有什么区别?
我正在使用 R 2.8.1,可以同时使用=
和<-
作为变量赋值运算符。他们之间有什么区别?我应该使用哪一个?
java - 为什么 Java 没有条件与和条件或运算符的复合赋值版本?(&&=, ||=)
所以对于布尔值的二元运算符,Java 有&
, |
, ^
,&&
和||
.
让我们在这里简要总结一下他们所做的事情:
对于
&
,结果值是true
如果两个操作数值都是true
; 否则,结果为false
。对于
|
,结果值是false
如果两个操作数值都是false
; 否则,结果为true
。对于
^
,结果值是true
如果操作数值不同;否则,结果为false
。
&&
运算符类似于但仅当&
其左侧操作数的值为 时才计算其右侧操作数true
。
||
运算符类似于,但仅当其|
左侧操作数的值为 时才计算其右侧操作数false
。
现在,在所有 5 个中,其中 3 个具有复合赋值版本,|=
即&=
和^=
。所以我的问题很明显:为什么 Java 不提供&&=
和||=
?我发现我需要的比我需要的多&=
,而且|=
。
而且我不认为“因为它太长”是一个好的答案,因为 Java 有>>>=
. 这种遗漏一定有更好的理由。
有12个赋值运算符;[...]
= *= /= %= += -= <<= >>= >>>= &= ^= |=
有人评论说,如果&&=
和||=
被实施,那么它将是唯一不首先评估右手边的运算符。我认为复合赋值运算符首先评估右手边的想法是错误的。
形式的复合赋值表达式
E1 op= E2
等价于E1 = (T)((E1) op (E2))
,其中T
是 的类型E1
,除了E1
只计算一次。
作为证明,以下代码段抛出 a NullPointerException
,而不是ArrayIndexOutOfBoundsException
.