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

scala - 将可变映射转换为不可变映射

如何将其转换为不可变?

0 投票
2 回答
941 浏览

c++ - boost::序列化与可变成员

使用 boost::serialization,序列化包含可变成员中缓存的派生值的对象的“最佳”方法是什么?

出于维护原因,我想避免将 serialize() 拆分为单独的 save() 和 load() 方法。

序列化的一种次优实现:

这处理了反序列化的情况,但是在序列化的情况下,缓存的值被杀死并且必须重新计算。

在这种情况下,最佳做法是什么?

0 投票
2 回答
3403 浏览

c# - C# 如何判断 IEnumerable 是否可变?

我想要一种方法来更新 IEnumerable 的某些条目。我发现对条目进行 foreach 并更新值失败了,因为我在后台克隆了集合。这是因为我的 IEnumerable 得到了一些 LINQ->SQL 查询的支持。

通过更改获取列表的方法,我改变了这种行为,列表始终是可变的,因此该方法会更改列表中的实际对象。而不是要求传递一个列表,我可以使用一个可变接口吗?

0 投票
2 回答
1465 浏览

iphone - mutableCopyWithZone 更新属性值

我有一个需要复制的类,它能够更改两个类上变量的值。简单地说,这些类需要始终保持彼此的克隆。我对文档的理解是,我可以使用也被声明为可变的 Class 的浅表副本来做到这一点。通过浅拷贝变量的指针值将被克隆,使其在两个类中完全匹配。因此,当我更新原始变量时,副本将同时更新。这是正确的吗?

正如您在下面看到的,我在要复制的类中使用了 mutableCopyWithZone。我已经尝试了 NSCopyObject 和 allocWithZone 方法来让它工作。尽管我能够复制该类并且它按预期显示,但在更新变量时它不会更改复制的类中的值。

infoTextViews 是一个声明为非原子的属性,保留在被复制的类的头文件中。我也相应地实现了 NSMutableCopying 协议。

任何帮助都会很棒。

0 投票
1 回答
193 浏览

user-interface - 函数式语言 gui 绑定如何工作?

他们是否通常使用语言的非功能方面(包括可变变量)。还有其他策略吗?你能描述一下它们吗?

0 投票
1 回答
6503 浏览

guice - 在保持状态的同时改变(添加/删除绑定)Guice 注入器的最佳方法

我希望重新定义或更新模块中的一些绑定,这些绑定又被注入器使用。我意识到模块是不可变的,一旦绑定被吸收和注入,它的定义就不能改变所有实际目的。

我想添加/更改/删除绑定,同时保持单例已经存在于注入器中。更改是一个简单的案例,因为可以通过使用 Provider 来实现此效果。但是动态添加或删除 Key(绑定定义)有点棘手。

如果这应该或可以实际完成的任何想法。

我认为最好的方法是每次添加/删除绑定时重新创建一个注入器,将定义从原始复制到新的,任何现有的单例都将由 toInstance 而不是实现类型等重新定义。

0 投票
1 回答
422 浏览

c++ - C++中序列容器的灵活变异

我正在思考 STL 迭代器的当前限制,并想知道是否有一种优雅的方法来解决它。这是我的情况:我有一个类,它封装了一个序列容器和一个通用方法来改变容器的内容,例如:

为简洁起见,省略了一些细节,但我正在考虑的主要问题是将什么传递给 mutator(m() 仿函数调用中的 ??)。第二个问题是从 mutate 返回什么以允许对 mutator 进行简单组合。一种可能性是将一对开始/结束迭代器传递(并返回)到 data_,甚至是 boost::sub_range,例如:

这将允许我对数据执行大部分我想要的操作,例如否定范围内的所有值、乘以一个因子等。这也允许我链接或组合各种变异器,就像在这个(缩短的)版本中一样:

因此,例如,任何 mutator 都可以选择其输入的一个子范围来限制外部 mutator 工作的范围,这是一个理想的特性。所有这些mutators都可以就地更改数据,这非常有效。

然而,这种语法不能做的是修改容器的大小(至少不能使用向量),因此插入或删除元素的 mutator 不能与基于迭代器的接口一起使用。另一个接口将整个容器传递给 mutator。我不确定在这种情况下如何处理子范围,而且它也感觉不像基于通用和最低要求的基于迭代器的解决方案那样优雅的解决方案。

我将不胜感激有关如何处理此限制的任何想法。

0 投票
2 回答
10786 浏览

scala - 将不可变集合转换为可变集合

collection.immutable.Set转换为的最佳方法是collection.mutable.Set什么?

0 投票
5 回答
17587 浏览

f# - F#:让 mutable 与 ref

首先,我承认这个问题可能是重复的;让我知道。

我很好奇在需要可变性的情况下,一般的“最佳实践”是什么。F# 似乎为此提供了两种工具:let mutable绑定,它似乎像“大多数”语言中的变量一样工作,以及ref需要显式取消引用才能使用的引用单元(使用函数创建)。

有几种情况是“强制”进入其中一种情况:.NET 互操作倾向于使用可变的 with <-,而在工作流计算中必须使用refwith :=。所以这些案例非常明确,但我很好奇在这些场景之外创建自己的可变变量时该怎么做。一种风格比另一种风格有什么优势?(也许对实施的进一步了解会有所帮助。)

谢谢!

0 投票
1 回答
920 浏览

mutable - XSLT 2.0 如何跨各种循环和结构做计数器和变量

所以,我知道你不能访问范围之外的变量,它们是不可变的,XSLT 是功能性的而不是命令性的,等等......

但是我需要一种通用的方法来处理全局可变变量(这听起来很邪恶:)。这是一个例子......

挑战在于,在处理过程中的任何时候都可能存在任意数量的模板,例如 t1 和 t2,以及修改和使用变量的模板。

也许问题的一部分是值取决于处理顺序,但这是故意的——这就是所需要的。

我想到的一种可能性是将值作为参数传递到任何地方。但问题是一个叶子模板可能需要更改它,然后处理会重新开始......它会丢失该更改。除非模板有某种方法可以返回参数,然后我可以传递这些返回的参数?考虑一种通用的纯函数式编程语言,似乎人们可能会这样做——递归调用,但使用返回值进行进一步调用,这样人们就可以“继承”这些值。

我已经看到使用扩展来完成这项工作——调用 Java 方法或类似的东西,然后你可以拥有全局可变值,但是......我真的不想那样“作弊”。

欢迎任何指针,想法等。