问题标签 [immutable-collections]

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 回答
207 浏览

c# - Service Fabric:存储在 IReliableDictionary 中的 ImmutableList 在应用程序升级时返回空

我目前正在开发一个保留多个IReliableDictionary对象的 Service Fabric 有状态服务。正如本文所推荐的那样,其中一些字典具有ImmutableListsas 值。 例如,我有一个. 字典被完美地填充和检索,但是当应用程序升级时,我所有的不可变列表都返回为空。所有其他数据都完好无损,如果我切换到,则集合保留得很好。为了进行此测试,我正在填充列表,增加服务版本号,并在我的本地集群上点击“发布 > 升级”。我已经测试了 1 和 5 节点配置,效果相同。 是否存在与和 的兼容性问题

IReliableDictionary<string,ImmutableList<string>>IReliableDictionary<string,List<string>>

ImmutableListIReliableDictionary我应该注意什么?我该如何正确存储我的状态?我很乐意根据需要分享任何代码,但我不确定哪些部分是相关的。

首次运行时初始化并在后续运行时检索:

0 投票
2 回答
6835 浏览

scala - 如何根据scala中的条件替换映射中的值

我有几个不可变的地图记录,例如:

我需要识别"name"每条记录的键并检查其值。如果值为"Jane",我需要替换"Doe"并更新地图记录。

0 投票
1 回答
330 浏览

c# - C# 不可变堆栈表现

我需要在我的代码中使用System.Collections.Immutable ImmutableStack<T>但是我注意到自从使用它以来性能受到了一些影响。我想知道是否有替代方案可以提供更好的性能?

我测试Stack<T>ImmutableStack<T>以下内容

平均Stack<T>比 . 快约 20%-25% ImmutableStack<T>。我在整个应用程序中都使用它,因此性能损失会造成损失。它需要是一个堆栈并且它需要是不可变的。关于可以采取哪些措施来提高这种性能,有什么建议吗?

0 投票
0 回答
1392 浏览

java - java只读ByteBuffer是否是具有不可变字节数组的正确对象?

我需要有将在多线程环境中使用的不可变字节数组。我遇到了ByteBuffer类,可以使用方法将其设为只读.asReadOnlyBuffer

但是我想知道一个正确的不可变字节容器,以下是关于我的:

  1. 如果ByteBuffer创建时ByteBuffer.wrap()初始数组可能会更改,则ByteBuffer无论.asReadOnlyBuffer.
  2. ByteBuffer多线程的只读读取操作是否安全?

还有其他顾虑吗?

0 投票
4 回答
9089 浏览

c# - ReadOnlyDictionary 和 ImmutableDictionary 有什么区别?

在 C# 中,这两个容器之间的主要区别(在功能或用例方面)是什么?Google 上似乎没有任何信息可以比较这些。

System.Collections.ObjectModel.ReadOnlyDictionary System.Collections.Immutable.ImmutableDictionary

我知道 anImmutableDictionary是线程安全的。a 也一样ReadOnlyDictionary吗?

这不是如何正确使用 IReadOnlyDictionary?. 这个问题是关于如何使用 IReadOnlyDictionary。这个问题是关于两者之间的区别(正如有人在 2015 年对该主题评论的那样,这将是一个不同的问题 - 即这个问题)

0 投票
1 回答
290 浏览

scala - scala中的递归不会停止

我有一种方法可以帮助我解决骑士之旅。我希望在找到解决方案后立即停止递归,但是它会继续进行。

最后,它返回近 20 种不同的解决方案。我在下面添加了我的代码,有人可以指出这里有什么问题吗?

0 投票
3 回答
1556 浏览

reactjs - 如何更新嵌套不可变映射中的值

我是 immutable.js 的新手,并试图找出一种更新嵌套地图的方法

这是我的对象

我正在尝试使用 setIn 函数设置“名称”对象的值

该值未按预期更新。我在这里有什么遗漏吗

0 投票
0 回答
178 浏览

c# - 可以与 DataContract 一起使用的最佳 C# 可排序序列化列表是什么?

作为一个类的一部分,我有一些不可变的 POCO 对象只是作为配置文件的数据传输对象。

信息

我希望能够将其序列化为以下 XML(或者将来可能是 JSON?)

稍后我将使用此配置来制作一个排序列表,以便我可以针对已使用的磁盘空间量获取适当的警告和日志级别。例如,我使用了 77% 的磁盘空间,从排序列表中获取适当的错误消息 (75%)。

我可以让 List 使用 SortedList 并仍然使用 DataContract 维护我正在寻找的 XML 输出吗?

我可以保持我的类不可变吗?

还是为了简单起见,我最好使用 List 并为了易于使用而使用 LINQ?

0 投票
1 回答
207 浏览

c# - 从 F# 中的地图中删除所有

C#:

在 C# 中,我有这样的东西:

我假设ImmutableDictionary<K,V>.RemoveRange Method (IEnumerable<K>)引入了该方法,因为它比一系列Remove(K)调用更有效。它只创建一次生成的不可变对象,而不是为keys要删除的每个元素创建一次。

F#:

在F#中实现相同目标的最佳方法是什么。我想出了这个递归解决方案:

但我怀疑它是否像RemoveRange上面那样有效。

问题:

  1. RemoveAllF#中最有效的等价物是什么?
  2. 你认为 F# 递归优化会编译成同样有效的东西吗?
0 投票
0 回答
601 浏览

c# - 如何在实体框架 6 中使用 ImmutableList<> 而不是 List<>

在我的项目中,我们使用 Entity Framework 6 和 Microsoft 的 System.Collections.Immutable types nuget 包。

我们的目标是能够使用 EF 对数据库进行查询,并且默认情况下返回的数据是不可变的。

因为我们有one-to-many关系,所以在 EF 中我们使用一种List<>类型来表示我们结构中的关系。但是由于我们希望它是不可变的并且有强有力的保证,所以我们想使用它ImmutableList<>

只是将表类属性从更改为List<>似乎ImmutableList<>不起作用,因为新的迁移将忽略ImmutableList<>并删除我们之前的一对多关系。

所以,我的问题是,是否有某种方法可以使 EF 与该ImmutableList<>类型一起工作,如果没有,还有什么其他方法可以使这个 EF 表结构不可变?