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

rust - 不能作为不可变借用 - String 和 len()

但是,这是一个编译错误。与借用检查器和可能的可变性有关。

然而,如果我稍微改变它,我可以这样做:

为什么?有没有办法改变它,所以它可以写在一行中?(PS 这是在 Rust 1.0 上)

0 投票
3 回答
48061 浏览

javascript - 如何解决 moment.js 中的可变性?

我遇到了一个问题,我必须存储时刻对象的初始值,但是在阻止我的变量与原始对象一起更改时遇到了一些麻烦。

不幸的是Object.freeze(),它不起作用,因为Invalid date当我尝试格式化时,moment.js 返回一个错误。

0 投票
2 回答
395 浏览

copy - 如何轻松地将非 mut &[u8] 复制到 &mut [u8]

我想对 &mut [u8] 做一些操作。

在我的测试代码中,我有:

在这种情况下,如何轻松获得可变的 u8 切片?问号的地方应该放什么?

0 投票
2 回答
244 浏览

objective-c - 可变与不可变的正确模式

我想知道实现可变与不可变数据结构的正确模式是什么。我理解这个概念以及它是如何工作的,但是如果使用底层的 Cocoa 数据结构,我应该如何实现呢?NSSet我的意思是,例如,如果我使用 a 。可以说我有以下内容:

我使用可变集作为底层数据结构的唯一原因是,此类的可变版本可以篡改它。MyDataStructure本身并不真的需要一个可变集。因此,假设我已经实现了一些初始化程序以使此类有用,MyMutableDataStructure如下所示:

通过使用这种模式,底层数据结构总是可变的,它的不可变版本只是一个不可变的副本(或者是吗??)。

NSCopying这也引出了实现协议时出现的另一个问题。这是一个示例实现:

copyWithZone:如果适用,不返回不可变副本?所以我基本上将 a 分配NSSet给一个NSMutableSet属性,不是吗?

编辑:在深入研究这个问题时,我发现了围绕这个问题的更多问题。

  1. mySet应该copy代替strong.
  2. 我的copyWithZone:实现也不对。我在第一篇文章中没有提到它,但该实现与数据结构 ( MyDataStructure) 的不可变版本有关。正如我所读到的,不可变数据结构实际上并没有创建副本,它们只是返回自己。这就说得通了。
  3. 由于 2.,我需要copyWithZone:在可变版本 ( MyMutableDataStructure) 中覆盖。

为了清楚起见:

起初这似乎很棘手,但我想我已经掌握了窍门。所以剩下的问题是:

  1. 模式是否正确?
  2. getter 是否mySet返回可变或不可变实例?
  3. copy(之前未列出)使用copyproperty 属性时我真的需要信号吗?

感谢您耐心读到这里。最好的。

0 投票
1 回答
7802 浏览

rust - 不能将 `self.x` 作为不可变借用,因为 `*self` 也作为可变借用

首先,让代码说话:

这个错误:

如果我取消注释2.or 3.,为什么它编译得很好?被调用的函数 in1.并没有做任何与2.or完全不同的事情3.。那么为什么1.编译失败呢?

尽管有许多类似的标题问题,但我无法清楚地将其识别为欺骗(除了错误消息相同),可能是因为我对 Rust 中的所有权/借用系统缺乏了解。

0 投票
1 回答
325 浏览

rust - 修改 str 的切片

我有一个Vec<&str>并且我想从它的所有元素中删除一个前缀。这就是我模糊的意图:

但是,我似乎无法将所有mut' 放在正确的位置。或者也许这是与一生有关的事情?谁能给我一个提示?这是我当前的错误:

0 投票
2 回答
4906 浏览

python - Python 集不会执行联合

我有一个定义了成员的类:

当我执行myobject.myset.add('item')时,使用我的类的实例,它工作正常:print(myobject.myset)给我 {'item'} 。

但是,当我执行时myobject.myset.union(yourset), whereyourset不为空,它将不起作用;print(myobject.myset)仍然打印为空集。为什么一种方法 ( add) 有效,而另一种方法 ( )union悄悄地(不抛出异常)失败?甚至myobject.myset = yourset可以工作,但是union特别不会。

我正在使用 Python 3。

0 投票
1 回答
155 浏览

rust - 如何解决此类项目中的借用和可变性地狱?

这个想法很简单:有些应用程序有一些 Windows。Windows 对其应用程序有某种类型的引用。他们需要使用彼此的方法。我已经编写了一些粗略的代码,但是当我解决一个问题时,我得到了一个新问题。

0 投票
1 回答
1088 浏览

rust - 内部可变性如何对缓存行为起作用?

我正在尝试创建一个struct需要 aPath并根据需要从指定的路径加载图像。这是我到目前为止所拥有的:

这无法编译:

我想我明白为什么,因为 的生命周期cacheborrow_mut().

反正有没有构造代码以便它工作?

0 投票
1 回答
56 浏览

python - Python3:如何控制用户定义类的行为?

有这样一个排序功能:

排序功能适用于浮点数。

示例输出:./insertion_sort.py .23 .21 .26

但是我有一个名为 lList 的自定义类,它具有链接(另一个自定义类)类型的元素。当我输入 lList 的实例时,排序无法正常工作。

样本输出:0.23 0.21 0.26 /

我们可以看到,在浮点数的情况下,在赋值语句之后,key 的 id 和数组元素是不同的。但是在自定义类的情况下,即使在赋值操作之后,键和数组元素的 id 也是相同的。这就是麻烦的原因。

我怀疑问题是因为浮点数是不可变的,而我的自定义类不是。我的问题是解决这种情况的最佳方法是什么?

注意:我希望在我的排序过程中进行零到最小的更改。但是,我愿意自定义我的 lList 或链接类。

PS 我刚刚只发布了相关的代码。如果还需要类定义,就提一下,我也会补充的。

非常感谢!

更新:

链接定义:

这是 lList 定义:

这是创建相同场景的最小代码: