问题标签 [mutable]

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 投票
3 回答
2888 浏览

f# - 如何在 F# 中正确实现属性?

考虑我的第一次尝试,F# 中的一个简单类型,如下所示:

现在我通过 C# 测试它(这个对象被暴露给一个 C# 项目,所以明显的 C# 语义是可取的):

propName已正确分配,我的 F# Setter 正在运行,但第二个断言失败,因为基础值prop未更改。这种对我来说很有意义,因为如果我mutableprop字段中删除,不会产生错误(应该是因为我试图改变值)。我想我一定错过了一个基本概念。

prop在课堂上重新绑定/变异以Test通过单元测试的正确方法是什么?

0 投票
2 回答
6462 浏览

ruby - 为什么 Matz 选择在 Ruby 中默认使字符串可变?

这是这个问题的反面:为什么字符串在 Java 和 .NET 中不能是可变的?

在 Ruby 中做出这个选择仅仅是因为操作(追加等)在可变字符串上很有效,还是有其他原因?

(如果只是效率,那似乎很奇怪,因为 Ruby 的设计似乎并没有高度重视促进高效实现。)

0 投票
2 回答
242 浏览

python - 当分配给列表或直接调用时,python 随机函数的行为不同

我有一个 python 函数,可以随机化表示特定位置评分矩阵的字典。例如:

骗局功能:

现在解决问题......当我尝试直接打乱矩阵时,它工作正常:

给出:

但是当我尝试将此加扰分配给列表时,它不起作用!!!...

结果

问题是什么??? 为什么第一次后加扰不起作用,并且所有列表都填充了相同的矩阵?!

0 投票
2 回答
1126 浏览

equals - 如何实现 IEquatable当可变字段是相等的一部分时 - GetHashCode 的问题

我在我的应用程序中使用实体框架。

我用实体的部分类实现了IEquatable<T>接口:

现在在我的代码中,我以这种方式使用它:

注意(我在调试器可视化器中检查)EntityCollection 类将其实体存储在 HashSet 中,因此它与 GetHashCode 函数有关,我希望它依赖于 ID,因此实体通过它们的 ID 进行比较。

问题是当我点击保存时,ID 从 0 变为它的 db 值。所以问题是我怎样才能有一个平等的对象,被正确地散列。

请帮助我找出 GetHashCode 函数中的问题(按 ID)以及我可以更改哪些内容以使其正常工作。

非常感谢。

0 投票
8 回答
2444 浏览

python - 为什么“可变默认参数修复”语法如此难看,python 新手问道

现在跟随我的“python新手问题”系列并基于另一个问题

特权

转到http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables并向下滚动到“默认参数值”。在那里您可以找到以下内容:

python.org 上甚至还有一个“重要警告”,这个例子是相同的,但并不是真的说它“更好”。

一种说法

所以,这里的问题是:为什么在一个提倡“优雅语法”和“易于使用”的编程语言中,一个已知问题的“好”语法丑陋?

编辑:

另一种说法

我不是在问为什么或如何发生(感谢 Mark 的链接)。

我在问为什么语言中没有更简单的替代方法

我认为更好的方法可能是能够自己做某事def,其中 name 参数将附加到def可变对象内的“本地”或“新”。就像是:

我确信有人可以提供更好的语法,但我也猜测必须有一个很好的解释来解释为什么没有这样做。

0 投票
2 回答
245 浏览

python - 简单的python oo问题

看看这个简单的例子。我不太明白为什么 o1 打印两次“Hello Alex”。我认为由于默认 self.a 总是重置为空列表。有人可以向我解释这里的理由是什么吗?非常感谢。

0 投票
1 回答
1009 浏览

c++ - 如何创建指向可变成员的指针?

考虑以下代码:

编译器生成错误消息。问题是成员m是可变的,因此允许更改m。但是函数签名隐藏了可变声明。

如何 decalre 指向可变成员的指针以编译此代码?如果不可能,请链接到标准 C++。

0 投票
2 回答
1378 浏览

iphone - Plist数组,不能改变里面的字典

我有一个 plist,它的根是一个数组,里面有字典。

我从我的资源中加载一个 plist 作为 NSMutableArray。

我将它存储到 nsuserdefault 中,因为它必须在启动之间保持不变。

但我无法更改数组中的字典,因为它们不可变。我怎样才能使它们可变?

0 投票
2 回答
735 浏览

python - 向集合列表中的元素添加值

我正在使用 python,我有一个集合列表,构造如下:

...其中 n 是我想要在列表中的集合数。我想为列表中的特定集合添加一个值。再说第二组。我试过了

但这反而将值添加到列表中的每个集合。这种行为对我来说非常不直观。通过进一步的测试,我想我已经找到了问题所在:该列表显然包含同一集合的 10 个实例,或者指向同一集合的十个指针,或者其他什么。通过重复调用构建列表

允许我使用上面的语法将元素添加到单个集合中。所以我的问题是:我的第一个列表构建技术到底发生了什么?很明显,我不太了解语法。另外,有没有更好的方法来初始化一个 n 元素列表?我使用这种语法已经有一段时间了,这是我遇到的第一个问题。

0 投票
3 回答
1919 浏览

java - Java中有可写的迭代器吗?

在 C+ 中,可以使用迭代器来写入序列。最简单的例子是:

我需要更复杂的东西 - 将迭代器保留为类成员以备后用。但我不知道如何从 Java 迭代器中获得这种行为。

Java中有可写的迭代器吗?
如果不是,那么用什么代替它们?