问题标签 [mutability]

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 投票
1 回答
93 浏览

java - 字符串是不可变的,int 也是不可变的。这段代码让我困惑

在这段代码中,我们有一个 int,我们用一个值进行了初始化。现在我们将此引用另一个变量并分配一个新值。但这应该反映在其他变量中。但事实并非如此。这个 java 引用是如何按值传递的。字符串是不可变的,但这是如何在整数中发生的

这是 O/P

10

20

10

0 投票
3 回答
85 浏览

python - Python 疯狂的可变性

这段代码应该打印什么?

我期望以下:

但是得到了

所以...我可以通过修改子类实例来修改父类(不是实例!)。这正常吗?

0 投票
1 回答
326 浏览

reference - 借用与可变借用一生中奇怪的失败

在尝试实现一个迭代器来产生对链表元素的可变引用时,我偶然发现了一个奇怪的问题。

这工作正常:

但这不起作用;编译器说生命周期self太短,无法保证其内容可以安全地重新借用:

我希望这两个示例都有效,或者两者都无效,但我无法理解借用可变与不可变的东西会如何影响编译器检查生命周期的方式。当然,如果某物的寿命足够长,可以安全地借用,那么它的寿命也足够长,可以安全地可变地借用吗?

编辑:这是两个迭代器的定义:

链表:

有关文件的完整视图,请参阅https://github.com/TisButMe/rust-algo/blob/mut_iter/LinkedList/linked_list.rs

0 投票
1 回答
1089 浏览

python - 为什么两个单独创建的不可变对象具有相同的 id 而可变对象具有不同的 ID,而两者都引用相同的值?

两个单独创建的可变列表具有不同的 id。

Python SHELL:(可变)

虽然两个单独创建的不可变字符串具有相似的 id。

Python SHELL:(不可变)

ab引用同一个对象吗?如果不是,为什么 id 相似?是mylistyourlist引用不同的对象吗?如果是,为什么他们有不同的ID。

0 投票
3 回答
1451 浏览

clojure - :volatile-mutable 与 :unsynchronized-mutable 的语义含义是什么?

当我注意到一个可变字段用^:unsynchronized-mutable注释时,我正在研究一个 clojure 库。Mutable 是可变的,但我不知道非同步部分是什么意思,所以我阅读了文档,其中包含:

请注意,可变字段极难正确使用,并且仅用于促进在 Clojure 本身中构建更高级别的构造,例如 Clojure 的引用类型。它们仅供专家使用 - 如果 :volatile-mutable 或 :unsynchronized-mutable 的语义和含义对您来说不是很明显,那么您不应该使用它们。

我无法理解细微差别:是说在实践中我选择哪种可变性注释并不重要,还是人们应该完全忘记使用可变类型?

而且,为了好奇,在较低的抽象层次上,它们之间的语义区别是什么?

谢谢!

0 投票
1 回答
268 浏览

functional-programming - Elixir 的 Module.register_attribute 是可变性的吗?

它是一种使用模块创建可变状态的方法吗?如何使用它是一个好主意?这不会打破函数式编程的不变性思想吗?

0 投票
1 回答
37 浏览

data-structures - `cdr` 的 `set-car!` 也改变了 `car`,为什么?

在过去之后(set-car! (cdr p) 'b)p((b) b)而不是((a) b)。为什么?

0 投票
1 回答
101 浏览

java - 如何在传递它的原始方法中访问修改后的 StringBuilder

我的问题很简单,我将在下面发布代码:我想在一个方法中创建一个名为 results 的 StringBuilder,比如方法 1,然后将其传递给另一种方法,比如方法 2。但是方法 2 是 RECURSIVE 并返回 void。我想访问已被方法 2 修改的 StringBuilder,在方法 1 的内部。但是正如预期的那样,我只得到 StringBuilder 的原始值...如何获得新的修改值?据我了解, StringBuilder 是可变的,不是吗?

0 投票
2 回答
50 浏览

java - java中数组的可变性

如果一个方法从特定的数组索引返回一个对象,然后这个对象被修改,这个对象是只在本地修改还是数组中的对象也被修改?

有没有办法强制每个案例?

0 投票
7 回答
71125 浏览

swift - Swift使方法参数可变?

如何在不创建其他变量的情况下处理此错误?

我不想创建额外的变量来存储 x 的值。甚至可以做我想做的事吗?