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

collections - += 附加到 Scala 2.7.7 中的堆栈;:+ 在 Scala 2.8.0 中似乎不起作用

使用 Scala 2.7.7,这可以按预期工作:

更改为 Scala 2.8.0 后,+= 应替换为 :+。但是,这不会附加到堆栈:java.util.NoSuchElementException:空列表头。

我忽略了一些基本的东西吗?

0 投票
5 回答
4504 浏览

c++ - 不使用 const_cast 修改 *this 的 const 方法

我正在编写的程序中出现了以下模式。我希望它不是太做作,但它设法Foo在 const 方法中改变一个对象Foo::Questionable() const,而不使用任何 const_cast 或类似的东西。基本上,Foo存储对的引用,FooOwner反之亦然,并且 in Questionable(),通过调用其所有者Foo来设法在 const 方法中修改自身。mutate_foo()问题跟随代码。

这是定义的行为吗?应该Foo::data声明为可变的吗?或者这是我做错事的迹象?我正在尝试实现一种延迟初始化的“数据”,它仅在请求时设置,并且以下代码编译良好,没有警告,所以我有点紧张我在 UB 领域。

编辑:conston Questionable() 仅使直接成员变为常量,而不是对象指向或引用的对象。这是否使代码合法?我对以下事实感到困惑,即 inQuestionable()具有this类型const Foo*,并且在调用堆栈的更下方,FooOwner合法地具有用于修改的非常量指针Foo。这是否意味着Foo可以修改对象?

编辑2:也许是一个更简单的例子:

0 投票
1 回答
2493 浏览

c - 用于收集论点的 Bison 语法

我有一个用于收集函数参数的野牛语法。到目前为止是这样的:

如何创建一个没有固定长度的整数数组,可以像 Bison 中的普通 C 数组一样使用?

0 投票
4 回答
803 浏览

python - python:更改 groupdict() 返回的字典

修改标准库对象的方法返回的可变对象是否安全?

这是一个具体的例子;但如果可能的话,我正在寻找一个普遍的答案。

这段代码安全吗?我担心通过更改 groupdict() 我会破坏对象 m (我以后仍然需要它)。

我对此进行了测试,随后对 m.groupdict() 的调用仍然返回了原始字典;但据我所知,这可能取决于实现。

0 投票
3 回答
2966 浏览

java - 带有可变对象的 Java 集合

当对象是可变的时,TreeSet、HashSet 或 LinkedHashSet 的行为如何?我无法想象它们会在任何意义上起作用吗?

如果我在添加对象后修改它;列表的行为是什么?

除了链表或数组之外,是否有更好的选择来处理可变对象的集合(我需要对其进行排序/索引/等)并且每次都简单地遍历它们?

0 投票
5 回答
31207 浏览

android - 将资源加载到可变位图

我正在从这样的资源中加载位图:

我想要做的是在我的绘制方法中将位图绘制到主画布之前对位图进行一些更改(因为在我的主循环中重复大量绘图时它不会改变似乎很浪费)。我正在使用以下内容对位图进行更改:

所以很自然地我得到了一个例外

所以为了避免我制作了位图的副本,以便它是可变的

哪个避免了这个问题,但它有时会导致 OutOfMemoryExceptions,知道有什么更好的方法来实现我想要的吗?

0 投票
1 回答
6584 浏览

scala - 如何更新 Scala 中的可变哈希图元素?

我写了一个与此非常相似的函数:

在实际代码中,类型 A 和 B 是枚举,而 C 是案例类。myMutableHashMap 被定义为与函数在同一类中val的类型。scala.collection.mutable.HashMap[(TypeA, TypeB), TypeC]writeMyEl

Scala (2.8) 编译器说:

我究竟做错了什么?

0 投票
3 回答
4447 浏览

iphone - 如何清除 NSMutableAttributedString 的内容?

我有一个在对象的 init 中分配初始化的 ivar:

在循环中,我想清除 attString 的内容并重新使用它。我该怎么做呢?

谢谢!

0 投票
3 回答
308 浏览

c# - 从外部代码的角度来看,一个不可变的可变结构呢?

更新:发布这个问题后,我想到这个想法的主要缺点只是这种类型很容易使用不当。也就是说,必须以非常特定的方式使用该类型才能获得任何好处。我最初想到的是可以像这样使用的东西(SquareRootStruct为了保持一致性,坚持使用原始问题中的示例):

因此,考虑到这很容易出错,我倾向于认为里德(在他的评论中)可能是对的,这对于一个班级来说更有意义。


假设我有一个struct我想要具有以下特征的产品:

  1. 外部角度来看是不可变的
  2. 快速初始化
  3. 某些属性的延迟计算(和缓存)

显然,第三个特征意味着可变性,我们都知道这是不好的(假设“不要制作可变值类型!”的口头禅已经深入到我们的脑海中)。但在我看来,只要可变部分仅在类型本身内部可见,并且从外部代码的角度来看,值总是相同的,这将是可以接受的。

这是我正在谈论的一个例子:

现在,显然这是一个微不足道的例子,因为Math.Sqrt在这种情况下几乎可以肯定认为这种方法值得考虑。这只是用于说明目的的示例。

但我的想法是,这实现了我的三个目标,而最明显的替代方法却无法实现。具体来说:

  • 可以在类型的构造函数中执行计算;但这可能会达不到上述第二个目标(快速初始化)。
  • 可以对每个属性访问执行计算;但这可能会达不到上述第三个目标(缓存计算结果以供将来访问)。

所以是的,这个想法将有效地导致内部可变的值类型。然而,就任何外部代码而言(如我所见),它看起来是不可变的,同时带来了一些性能优势(再次,我意识到上面的示例适合使用这个想法;“性能好处”我所说的将取决于计算实际上是否足够昂贵以保证缓存)。

我是否遗漏了什么,或者这实际上是一个值得的想法?

0 投票
1 回答
8471 浏览

python - Python:替换列表中的元素(#2)

与我的标题相同的先前问题已发布,(我认为)相同的问题,但代码中存在其他问题。我无法确定该案例是否与我的相同。

无论如何,我想替换列表中列表中的元素。代码:

我现在期望:

但我得到:

为什么?

这在命令行中被复制。linux2 上的 Python 3.1.2(r312:79147,2010 年 4 月 15 日,15:35:48)[GCC 4.4.3]