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

java - 为什么字符串在 Java 和 .NET 中不能是可变的?

为什么他们决定String在 Java 和 .NET(以及其他一些语言)中实现不可变?他们为什么不让它可变呢?

0 投票
18 回答
250567 浏览

c++ - 除了允许 const 函数修改变量之外,'mutable' 关键字还有其他用途吗?

不久前,我遇到了一些用mutable关键字标记类的成员变量的代码。据我所见,它只允许您修改const方法中的变量:

这是这个关键字的唯一用途,还是有更多的用处?从那以后,我在一个类中使用了这种技术,将 a 标记boost::mutex为可变的,允许const函数出于线程安全的原因锁定它,但是,老实说,这感觉有点像 hack。

0 投票
12 回答
96338 浏览

oop - 可变对象与不可变对象

我试图了解可变对象与不可变对象。使用可变对象会带来很多负面影响(例如,从方法中返回字符串数组),但我无法理解这样做的负面影响。使用可变对象的最佳实践是什么?你应该尽可能避免它们吗?

0 投票
17 回答
60368 浏览

python - 列表更改意外地反映在子列表中

我需要在 Python 中创建一个列表列表,所以我输入了以下内容:

该列表如下所示:

然后我更改了最里面的值之一:

现在我的列表如下所示:

这不是我想要或期望的。有人可以解释发生了什么,以及如何解决它吗?

0 投票
3 回答
320 浏览

python - 为什么类的新实例与其他实例共享成员?

我希望回报:

但我得到:

为什么是这样?我发现通过在init中执行 a=[] ,我可以绕过这种行为,但我不太清楚为什么。

0 投票
16 回答
91843 浏览

c# - 为什么可变结构是“邪恶的”?

在关于 SO 的讨论之后,我已经多次阅读了可变结构是“邪恶”的评论(就像在这个问题的答案中一样)。

C# 中的可变性和结构的实际问题是什么?

0 投票
6 回答
855 浏览

c# - 是否有充分的理由说明闭包在 C# 中不是不可变的?

我一直在脑海中一遍又一遍地思考这个问题,我似乎无法想出一个很好的理由来解释为什么 C# 闭包是可变的。如果您不知道到底发生了什么,这似乎是一种获得一些意想不到的后果的好方法。

也许有更多知识的人可以解释为什么 C# 的设计者会允许状态在闭包中改变?

例子:

这将为第一次调用打印“hello”,但在第二次调用时外部状态会发生变化,打印“goodbye”。闭包的状态已更新以反映对局部变量的更改。

0 投票
9 回答
829 浏览

c++ - C++中的字符串

我对 C++ 中的字符串有以下疑问

1>>哪个是更好的选择(考虑性能),为什么?

1.

或者

2.

2>>

当一个较大的字符串被复制到一个较小的字符串中时,c++ 中如何准确地处理内存管理?c++ 字符串是可变的吗?

0 投票
4 回答
9690 浏览

c++ - 在 C++ 中缓存昂贵的数据 - 函数范围的静态变量与可变成员变量

我有一个相对昂贵的数据获取操作,我想缓存它的结果。这个操作是从const方法中调用的,大致是这样的:

我想AdjustData留下来const,但我想缓存这个因素,所以我只在第一次获取它。目前我正在使用 amutable map<int, double>来存储结果(地图是 from keyto factor),但我认为使用函数范围的静态可能是一个更好的解决方案 - 这个因素只需要这个函数,并且与其余的班级。

这似乎是一个好方法吗?有没有更好的选择?我可能会想到什么,特别是在线程安全方面。

谢谢,

多姆

0 投票
2 回答
676 浏览

iphone - 搜索 NSMutableArray 的问题

基本上,我有一个 UISearchBar 搜索组成 RSS 提要的故事的 NSMutableArray,当您选择一个故事时,它会加载到我的应用程序的 UIWebView 中。这很难解释,但我有一个条目 1、2、3 和 4 的列表,您搜索“4”。4 将是现在过滤的数据列表中的第一个条目,对吗?你会认为通过选择 4,它会加载到 UIWebView 中。好吧,该应用程序似乎无法识别您正在选择过滤数据列表中的第一个条目,而是认为您正在选择过滤数据数组中的第一个条目,因此它加载条目 1。一切看起来就在我的代码中,但显然不是。

我知道这是一个令人困惑的问题,但我希望我说得清楚一些。无论如何,这里是相关的来源,这样你就可以明白我的意思:

Search.h: http ://www.scribd.com/doc/13107802/Searchh

Search.m: http ://www.scribd.com/doc/13107812/Searchm