问题标签 [immutablelist]

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 投票
0 回答
108 浏览

java - 如何向上转换不可变列表

我写了一个ImmutableList<T>类似于的类,ArrayList<T>除了它没有任何添加或删除操作。

现在假设我们有一个类Animal和一个子类Cat

我知道从List<Cat>to 转换List<Animal>是不安全的,因为它允许将Dog对象插入到猫列表中。

不可变列表不存在此问题,因为无论如何都无法将任何内容插入不可变列表:

是安全的,但编译器不允许这样做。

因此,我想添加一个方法来ImmutableList帮助我执行安全演员,也许像这样

甚至

我努力了

但这不会编译(你不能<S super T>在这里说,只有<S extends T>)。

所需的方法应满足一些要求

1. 不能允许不安全的强制转换,例如 from ImmutableList<Animal>to ImmutableList<Cat>
2. 必须高效,即不复制列表
3. 最好不要使用反射

有可能写出这样的方法吗?如果做不到这一点,您将如何解决问题?

0 投票
3 回答
1174 浏览

immutable.js - 更新 immutableJS 列表中深度嵌套的对象属性

我有以下不可变列表的层次结构:

在此列表中,我想更新项目 ID 为200的项目名称。虽然我可以通过查找它们的索引来更新简单的一级对象数组,但我不知道如何在 immutableJS 中从这个开始。

0 投票
1 回答
8481 浏览

reactjs - 不可变的 JS 列表大小

我不明白 Immutable JS List 的大小会如何增长。

正如官方文档https://facebook.github.io/immutable-js/docs/#/List/push上的示例一样,在不可变 js 列表中推送某些内容将自动增大大小。

在我的代码中:

我在控制台的输出是:

这与方面的输出确实不同。没有大小,如果我在代码中使用长度 Typescript 告诉我它在列表中不存在“长度”。我将 React 与 Typescript 和 Immutable.JS 一起使用

有人知道会发生什么吗?

0 投票
2 回答
1785 浏览

kotlin - 如何在不使用 Kotlin 中的集合映射的情况下复制或克隆数据对象的 mutableList

我创建了一个 MutableList 的副本。当我更新副本 MutableList 的元素值但原始列表元素值也发生了变化。当我使用 map 它工作正常但它就像整个列表的迭代,有什么方法可以在没有迭代的情况下实现?如何复制 MutableList 的元素。

0 投票
1 回答
412 浏览

java - 通过另一个 List 扩展 ImmutableList.of()

我想简化与 ImmutableList.of() 功能相关的现有代码

我已经尝试通过消除“new ...”构造函数来优化第二个列表的创建,但是我当然不能通过调用 .add(); 来扩展不可变列表;

当前代码:

预期的代码如:

0 投票
1 回答
68 浏览

javascript - 将元素推送到不可变列表而不重新分配变量

如何避免在迭代不可变列表时重新分配变量以创建另一个。我有下面的代码,它工作正常,

我正在尝试制作propsValue一个常量。如何实现?

0 投票
1 回答
80 浏览

python - 如何将列表复制到另一个变量并使该变量不可变?

我已经使用了一种反转数组对角线的算法。我正在尝试将列表复制ab不可变的。

我尝试使用“切片”( b = a[:])、列表理解,b = a.copy()但唯一有效的是b = copy.deepcopy(a). 有没有其他方法可以获得副本?

我希望输出为[[1,2,3],[4,5,6],[7,8,9]][[9,2,7], [4,5,6],[3,8,1]]并且它适用于copy.deepcopy,但不适用于我能找到的任何其他方法。

0 投票
3 回答
874 浏览

c++ - C++ 中的不可变列表

如何在cpp中制作不可变列表?列表的引用和它的数据一样应该是常量。

我不会在 vector 或任何其他容器上创建包装类(我知道类似于本文的方法)。

constexpr使用or的最佳方法是什么const pointers

0 投票
2 回答
97 浏览

java - java中的复制方法

我正在尝试将一个列表复制到另一个列表中,我有其他方法,例如删除,当我测试它们时,复制方法似乎正在编辑原始列表。

复制方法如下所示。

将代码更改为此,但仍然无法正常工作

0 投票
2 回答
41 浏览

python - Python动态创建不可变对象

在将一些函数foo()应用于它的所有元素之后,我正在尝试从列表中创建一个不可变对象,特别是freezeset 。也就是说:

给定列表my_list,我想要做的是在所有元素上执行函数foo()并结果构建一个frozenset。像这样的东西:

我不知道有没有办法一次性做到这一点,因为如果我没记错的话,对于冻结集的创建,我们迭代列表的元素,如果我们添加迭代应用foo()函数给了我两遍,我的直觉告诉我它可以一次完成。

有没有办法通过利用迭代创建集合来做到这一点?