问题标签 [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.
python - Python 函数有 2 个列表,但只更改了 1 个
为什么 Lista1 会改变而 Lista2 不会?哪些方法直接更改列表?
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?
rust - 如何实现任何可变性的特征?
可变性可以成为特征中的通用参数吗?我想为类型的可变和不可变变体实现特征,而无需复制和粘贴impl
块。
一厢情愿的伪代码:
rust - 如何在从成员函数调用的闭包中修改 self ?
我正在尝试计算合法的国际象棋移动,并且在满足借阅检查器时遇到问题。我有一个Chess
实现这些方法的结构(非重要代码替换为...
):
我得到一个编译错误,get_legal_moves
因为我self
在闭包内部进行修改,而get_moves
仍在借用self
.
我创建了一个简化示例,显示了我要解决的问题:
错误:
我怎样才能满足借用检查器以便代码可以编译?
python - 可变常量安全吗?
是否存在与列表常量或任何其他可变对象相关的“陷阱”?
目前,我的上下文与将传递给调用的常量有关,但我一般地问这个问题,因为我认为该主题不会对问题产生有意义的影响。
考虑这个示例代码:
我问这个是因为我非常清楚函数定义中的可变对象引起的问题;而且,即使据我所知,也不应该有任何事情对受人尊敬的常数进行分配或突变;并且“常量”并不是真正的东西:我问,并进一步问,是否有一些约定可以在语义上保护自身而不是意外突变?
swift - swift:就地修改字典
我有一个函数,它接受一个 json 对象,其内容可以是任何类型(字典、数组、字符串等)并根据类型修改对象。
在下面的人为示例函数“foo”中,如何修改字典?我得到编译器错误:
这是功能
static - 将数据解析为模块级可变静态变量
我在一个模块中有一组函数需要访问一些共享的初始化时间状态。实际上,我想用静态可变向量对此进行建模,例如:
(例如:http://is.gd/TyNQVv,失败,“可变静态不允许有析构函数”。)
我的问题类似于是否可以在 Rust 中使用全局变量?,但使用 a Vec
(即带有析构函数的类型),因此Option
基于 - 的解决方案似乎不适用于该问题。也就是说,这与我第一次尝试的错误相同:
有没有办法访问在初始化时填充并在运行时可见的静态(“全局”)向量?
我应该考虑其他模式来支持这个用例吗?传递对状态向量的显式引用是可能的,但会混淆大量需要访问此状态的函数签名。
python - globals() vs locals() 可变性
在 Python 中,globals()
返回全局符号表的表示,同时locals()
返回局部状态的表示。虽然两者都返回字典,但更改globals()
会在全局符号表中生效,而更改locals()
不会生效。
为什么会这样?
rust - 如何在不破坏封装的情况下返回对 RefCell 内某些内容的引用?
我有一个具有内部可变性的结构。
产生错误:
问题是我不能有一个Foo
返回借用的函数vec
,因为借用vec
只在 的生命周期内有效Ref
,但Ref
立即超出范围。
我认为Ref
必须坚持下去,因为:
RefCell<T>
使用 Rust 的生命周期来实现“动态借用”,这是一个可以声明对内部值的临时、独占、可变访问的过程。s 的借用RefCell<T>
是在“运行时”跟踪的,这与 Rust 的本地引用类型不同,后者在编译时完全静态跟踪。因为RefCell<T>
借用是动态的,所以可以尝试借用一个已经可变借用的值;当这种情况发生时,它会导致任务恐慌。
现在我可以写一个这样的函数来返回整个内部:
MutableInterior.hide_me
但是,这可能会将真正私有的实现细节的字段(在此示例中)暴露给Foo
.
理想情况下,我只想公开它vec
本身,可能有一个守卫来实现动态借用行为。然后来电者不必了解hide_me
。
javascript - javascript中参数的范围和对象可变性
我被分配了以下虚拟任务来了解 JavaScript 中的范围和可变性:
对于本练习,编写两个函数,reverseArray 和 reverseArrayInPlace。第一个,reverseArray,将一个数组作为参数并生成一个新数组,该数组以相反的顺序具有相同的元素。第二个,reverseArrayInPlace,执行 reverse 方法所做的事情:它修改作为参数给出的数组以反转其元素。两者都不能使用标准的反向方法。
我成功编写了 reverseArray 函数,并希望将其重用于 reverseArrayInPlace 函数。我编写了该函数的 3 个版本,我真的不明白为什么有些工作,而另一些则没有。我将不胜感激有关此 javascript 行为的任何解释。(我知道还有其他方法可以解决 reverseArrayInPlace 但我想知道为什么我的方法不起作用)。