问题标签 [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 投票
2 回答
318 浏览

java - String builder如何管理对单个对象的多线程访问和可变性?

String 的劣势如何成为 String-builder 的优势。我的意思是我已经知道字符串是不可变的,因为如果假设有五个 String 对象并且如果一个对象发生变化,那么它将反映所有内容并可能导致运行时错误,之后 String-Buffer 是可变的,但至少它是一次同步一个线程。事情进展顺利,最后现在 String-builder 可变,可以访问多个线程。使用起来这么复杂?程序员如何管理它。

0 投票
1 回答
101 浏览

list - scala mutable val List

Few days ago I found Paul Philip’s gist https://gist.github.com/paulp/9085746 which shows quite strange behavior. I did not find any explanation how is that possible

simplified code snippet:

It works as expected without toIterable

What is going on there?

0 投票
2 回答
340 浏览

c++ - C++ 中的可变与不可变二叉树遍历

我来自 Python 和 Haskell 背景,所以当我必须编写一个函数来计算二叉树中电影的数量时,我是这样做的:

但是,使用类中提供的头文件,我必须这样做:

我非常了解前者相对于后者的优势;后者比前者有什么优势?它与堆栈内存使用有关,对吧?

0 投票
1 回答
161 浏览

rust - Rust 中 self 和集合的可变性问题

我正在用 Rust 编写一个简单的库来管理一副纸牌。它具有洗牌、发牌等功能。

shuffle() 函数采用对 self 的可变引用,允许重新洗牌现有的牌组。它应该非常简单:

  1. 从卡片组创建一个临时集合,其中包含一个带有卡片和随机数的元组。
  2. 按随机数对集合进行排序。
  3. 使用临时集合的顺序重建现有的牌组。

代码如下。

我遇到的问题是这不会编译,因为我收到错误。

这些错误抱怨可变性,我认为这意味着它不喜欢我在范围内有多个可变引用或其他东西,但我不知道如何修复它。我尝试使用大括号分隔符为每个操作制作块,但无济于事。我可能可以将其分解为多个函数,但我宁愿它是一个函数。我如何以最少的努力完成这项工作?

注意,我还没有测试排序功能,所以我希望 sort_by_key 能按照我的想法做,但这只有在我解决了第一个问题之后才有意义。

0 投票
2 回答
3502 浏览

rust - 可变地借用一个结构字段,同时在闭包中借用另一个

我有一个包含两个字段的结构,我想使用另一个字段(不可变借用)修改一个字段(可变借用),但是借用检查器出现错误。

例如,下面的代码:

给出以下错误:

在闭包中使用另一个字段更新一个字段的 Rust 方法是什么?

0 投票
2 回答
117 浏览

java - Bloch 的 Effective Java 第 2 版中常量字段的定义

引用:

如果静态最终字段具有可变引用类型,则如果引用的对象是不可变的,它仍然可以是常量字段。

我不确定这是什么意思;有人可以举个例子吗?

0 投票
0 回答
577 浏览

ios - 更新 Swift 结构并访问完成块中的新值返回 Nil

我在改变结构然后在完成块中检索新数据时遇到问题。这是代码:

任何人都可以解释这是为什么以及如何修复它,以便在完成闭包中正确填充extendedInfo 变量吗?

谢谢

0 投票
1 回答
29 浏览

java - 返回集合的副本或克隆以防止可变性

我需要为 HashMap 的值提供一个 getter 方法,但是我不能允许对返回的 Collection 或其元素进行更改,这些元素将反映在我从中获取值集的原始 HashMap 中。我目前正在这样做:

这是否足以实现我的目标,或者返回的 Collection 的更改是否仍会反映在我的 HashMap 中?我问的原因是因为我知道对 Collection 的任何更改都返回了我的 Map 的 .values() 方法反映在原始 Map 中。谢谢!

0 投票
1 回答
120 浏览

iterator - How to extract values from &mut iterator?

I am trying to make an iterator that maps a string to an integer:

(Rust playground)

This fails with

the trait core::iter::FromIterator<&mut u32> is not implemented for the type collections::vec::Vec<u32>

Adding a dereference operator around the word_map.entry().or_insert() expression does not work as it complains about borrowing which is surprising to me as I'm just trying to copy the value.

0 投票
0 回答
25 浏览

scheme - 方案:在不同环境中变异局部变量会变异同一个对象

考虑这两个类似的过程:

鉴于这两个帮助程序:

将第一个调用三次会产生预期的结果:一个包含我们传入的1内容的列表。obj

我希望调用第二个版本三次会产生相同的结果,但事实并非如此。

两个过程的行为不应该相同吗?