问题标签 [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.
c# - 具有不可变存储的只读字段的类的构造函数
假设我们有以下简单的类。请注意,唯一的字段是readonly
并且用于ImmutableList<int>
:
给定所示的构造函数,很容易从一些int
s 创建一个实例:
现在,我可能还想要一个可以构建Abc
给定 an的构造函数IEnumerable<int>
:
所以我们的类现在看起来像这样:
这确实有效:
但是,这个构造函数有点尴尬,因为乍一看,是这样的:
可能看起来像是在Abc
用单个元素 ( item
) 创建一个。但是如果item
实际上是一个IEnumerable<int>
具有多个项目的,上面的第二个构造函数将被调用。
如果您查看 Microsoft ImmutableList
API,它们实际上调用ImmutableList.CreateRange
了类似于上面的第二个构造函数的静态方法。这很好,因为我们避免了上述视觉模糊。
好的,让我们开始为我们的Abc
类绘制一个类似构造函数的简单实现:
当然,我们在这里遇到了一个问题,因为该elts
字段是readonly
并且不能通过这个静态方法初始化:
CreateRange
那么,为我们的课程实现的好方法是Abc
什么?
scala - scala.collection.immutable.Vector 不能转换为
我很困惑为什么我不能从以下 Scala 代码行中产生一个集合:
它在这个函数内部,它使用不可变向量。
我在堆栈跟踪中收到以下错误:
我很困惑,因为我不想强制转换任何东西,它只是一个没有任何类型转换的简单语句。
如果编译器无法理解类型,我也尝试了这个:
kotlin - 如何使用 Kotlin 样式向 CopyInWriteCollection 添加元素?
假设我们有一个自定义集合
如果我需要添加几个元素,我会这样做:
并且newCollection
包含来自oldCollection
并且还包含 1,2,3 的元素。完美的!
但是如何使用forEach
of从另一个集合中添加元素map
?
scala - 当我们可以从中添加或删除元素时,地图或列表如何是不可变的?
下面是声明不可变 Map 的 scala 代码
在这里我们可以添加或更改 Map 的内容,那么我们怎么能说 scala 中的地图或列表是不可变的
scala - 以更不可变的方式解决此练习的更好方法是什么?
我正在尝试解决 HackerRank 上的问题。我试图以更实用的方式解决这个问题(使用不变性)。我尝试了一个解决方案,但我对此并不完全有信心。
这是问题的链接:
我的可变解决方案是这样的:
相同解决方案的不可变版本:
考虑到函数式编程原则,解决这个问题的理想方法是什么?
java - 如何从 Java 创建 Kotlin 列表?
如何从 Java访问和listOf
等方法。我在一个不使用 Kotlin 的项目中,但我们想使用有效的只读 Kotlin 集合。为什么?因为即使在 Java 中使用不可变列表时,它们也有会在运行时而不是在编译期间引发错误的 mutator 方法。mapOf
setOf
java - 来自 HashMap 的 ImmutableMap.Builder
我HashMap<K,V>
每个键都有一个默认值。
我想将它转换为一个,ImmutableMap.Builder
因为我有另一个ImmutableMap
我想合并并覆盖到原始 HashMap 中。我想覆盖一些默认对并最终构建一个ImmutableMap
.
如何转换HashMap
为ImmutableMap.Builder
?
我还没有看到ImmutableMap.Builder
构造函数得到一个HashMap
.
f# - 如何使用 FSharpx 的 PersistentVector 从索引 N 中删除一个项目?
我注意到来自 FSharpX 的 PersistentVector 没有 remove at index 方法。
它可以修改第 n 个位置的项目,但不能删除它。这似乎是一个奇怪的遗漏。如果不可能,那么有人可以建议一个具有这种能力的不同的不可变持久集合。
我当前从向量中删除id处的项目的代码是蛮力
请注意,我正在尝试使用 PersistentVector 作为 UI 的后备存储。我正在试验https://github.com/JaggerJo/Avalonia.FuncUI,它是 Avalonia 的 Elmish 端口。我走了很远,然后想在一行上添加一个删除按钮,但我找不到更新我的后备存储的方法。:(
UI 的示例代码是
https://gist.github.com/bradphelan/77f3fcb8e660783790c5610290cd8d97
java - 如何使用列表创建不可变类类中的元素
带列表的不可变类
测试不可变类以打破不变性
输出是
为什么以及如何将这个从客户端添加到列表中的新课程元素随时添加,所以我们如何解决这个问题,因为这个不可变类在创建后不允许修改