问题标签 [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 回答
43 浏览

python - Python 函数有 2 个列表,但只更改了 1 个

为什么 Lista1 会改变而 Lista2 不会?哪些方法直接更改列表?

0 投票
1 回答
3427 浏览

swift - Swift: Unpacking a tuple into mutable and immutable variables simultaneously

I have a Swift function which returns a tuple of two values. The first value is meant to usually, but not always, be used as an "updated" version of a piece of mutable state in the caller (I know I could also use inout for this instead of a tuple, but that makes it more annoying to keep the old state while preserving the new one). The second value is a generally immutable return value produced by the function, which is not intended to override any existing mutable state.

Conceptually, the usage looks like this:

The problem here, obviously, is that retval1, retval2, and retval3 are never declared, and the compiler gets angry.

state must be a var and must not be redeclared, so I can't write

However, retval is never modified and should be declared with let as a matter of best practices and good coding style.

I was hoping the following syntax might work, but it doesn't:

How should I go about unpacking / destructuring this tuple?

0 投票
1 回答
1898 浏览

rust - 如何实现任何可变性的特征?

可变性可以成为特征中的通用参数吗?我想为类型的可变和不可变变体实现特征,而无需复制和粘贴impl块。

一厢情愿的伪代码:

0 投票
1 回答
3781 浏览

rust - 如何在从成员函数调用的闭包中修改 self ?

我正在尝试计算合法的国际象棋移动,并且在满足借阅检查器时遇到问题。我有一个Chess实现这些方法的结构(非重要代码替换为...):

我得到一个编译错误,get_legal_moves因为我self在闭包内部进行修改,而get_moves仍在借用self.

我创建了一个简化示例,显示了我要解决的问题:

操场

错误:

我怎样才能满足借用检查器以便代码可以编译?

0 投票
2 回答
444 浏览

python - 可变常量安全吗?

是否存在与列表常量或任何其他可变对象相关的“陷阱”?

目前,我的上下文与将传递给调用的常量有关,但我一般地问这个问题,因为我认为该主题不会对问题产生有意义的影响。

考虑这个示例代码:

我问这个是因为我非常清楚函数定义中的可变对象引起的问题;而且,即使据我所知,也不应该有任何事情对受人尊敬的常数进行分配或突变;并且“常量”并不是真正的东西:我问,并进一步问,是否有一些约定可以在语义上保护自身而不是意外突变?

0 投票
1 回答
596 浏览

swift - swift:就地修改字典

我有一个函数,它接受一个 json 对象,其内容可以是任何类型(字典、数组、字符串等)并根据类型修改对象。

在下面的人为示例函数“foo”中,如何修改字典?我得到编译器错误:

这是功能

0 投票
1 回答
2853 浏览

static - 将数据解析为模块级可变静态变量

我在一个模块中有一组函数需要访问一些共享的初始化时间状态。实际上,我想用静态可变向量对此进行建模,例如:

(例如:http://is.gd/TyNQVv,失败,“可变静态不允许有析构函数”。)

我的问题类似于是否可以在 Rust 中使用全局变量?,但使用 a Vec(即带有析构函数的类型),因此Option基于 - 的解决方案似乎不适用于该问题。也就是说,这与我第一次尝试的错误相同:

  1. 有没有办法访问在初始化时填充并在运行时可见的静态(“全局”)向量?

  2. 我应该考虑其他模式来支持这个用例吗?传递对状态向量的显式引用是可能的,但会混淆大量需要访问此状态的函数签名。

0 投票
1 回答
301 浏览

python - globals() vs locals() 可变性

在 Python 中,globals()返回全局符号表的表示,同时locals()返回局部状态的表示。虽然两者都返回字典,但更改globals()会在全局符号表中生效,而更改locals()不会生效。

为什么会这样?

0 投票
3 回答
8116 浏览

rust - 如何在不破坏封装的情况下返回对 RefCell 内某些内容的引用?

我有一个具有内部可变性的结构。

产生错误:

问题是我不能有一个Foo返回借用的函数vec,因为借用vec只在 的生命周期内有效Ref,但Ref立即超出范围。

我认为Ref必须坚持下去,因为

RefCell<T>使用 Rust 的生命周期来实现“动态借用”,这是一个可以声明对内部值的临时、独占、可变访问的过程。s 的借用RefCell<T>是在“运行时”跟踪的,这与 Rust 的本地引用类型不同,后者在编译时完全静态跟踪。因为RefCell<T>借用是动态的,所以可以尝试借用一个已经可变借用的值;当这种情况发生时,它会导致任务恐慌。

现在我可以写一个这样的函数来返回整个内部:

MutableInterior.hide_me但是,这可能会将真正私有的实现细节的字段(在此示例中)暴露给Foo.

理想情况下,我只想公开它vec本身,可能有一个守卫来实现动态借用行为。然后来电者不必了解hide_me

0 投票
2 回答
850 浏览

javascript - javascript中参数的范围和对象可变性

我被分配了以下虚拟任务来了解 JavaScript 中的范围和可变性:

对于本练习,编写两个函数,reverseArray 和 reverseArrayInPlace。第一个,reverseArray,将一个数组作为参数并生成一个新数组,该数组以相反的顺序具有相同的元素。第二个,reverseArrayInPlace,执行 reverse 方法所做的事情:它修改作为参数给出的数组以反转其元素。两者都不能使用标准的反向方法。

我成功编写了 reverseArray 函数,并希望将其重用于 reverseArrayInPlace 函数。我编写了该函数的 3 个版本,我真的不明白为什么有些工作,而另一些则没有。我将不胜感激有关此 javascript 行为的任何解释。(我知道还有其他方法可以解决 reverseArrayInPlace 但我想知道为什么我的方法不起作用)。