9得票4回答
命令模式与访问者模式

让访问者修改接收器的状态是否通常可接受,还是应该使用命令模式?

9得票1回答
在存在可变引用的情况下传递不可变引用

我有一个for循环,会遍历一个Point结构体的切片。在循环中,Point的一些字段将被修改,因此包含循环的函数需要对切片进行可变引用。 当我需要将一个(不可变)引用传递给在可变引用上迭代的for循环内部的函数时,问题就出现了: #[derive(Debug)] struct Point ...

8得票3回答
返回Array和IList<>有什么区别?(关于Eric Lippert的有害数组)

我刚刚阅读了Eric Lippert的"Arrays considered somewhat harmful"文章。他告诉读者们,他们“可能不应该返回数组作为公共方法或属性的值”,并给出了以下理由(略有改动): 现在,调用者可以取出该数组并将其内容替换为任何他们想要的内容。合理的做法是返回 ...

8得票6回答
Python中的可变和不可变字符串

我正在学习Python中的可变和不可变结构。在文档中写道,"字符串是不可变的",也就是说我们无法改变它们。考虑以下代码: str1='Rohit' str1.replace('R','M') 这将产生以下输出: 'Mohit' 现在,有人说变量str1指向字符串'Rohit',在执...

8得票1回答
以线程安全的方式发布非线程安全对象字段

我在Java并发方面遇到了问题。是的,我看过几乎相同标题的问题,但它们似乎都在询问微妙的不同之处。是的,我读过《Java并发编程实战》。是的,我能理解为什么它是该主题的事实上的参考书。是的,我已经阅读了特别介绍线程安全类中字段发布的部分。但是,尽管我知道有人会简单地指向那本书,我仍然要在Jav...

8得票2回答
Objective-C和C ++中的可变性设计模式

最近我做了一些iPhone开发,注意到在iPhone SDK中使用了很多有关对象可变性的设计模式。 通常情况下,这里的典型方法是定义一个不可变类NSFoo,然后派生出一个可变的子类NSMutableFoo。通常情况下,NSFoo类定义数据成员、获取器和只读操作,而派生的NSMutableFo...

7得票3回答
为什么修改dict2内的嵌套字典会影响dict1?

我不理解这些案例: content = {'a': {'v': 1}, 'b': {'v': 2}} d1 = {'k1': {}} d2 = {'k2': {}} d1['k1'].update(content) print(d1) content['a']['v'] = 3 conten...

7得票1回答
Scala 可变的 List。

几天前,我发现了Paul Philip的代码片段https://gist.github.com/paulp/9085746,展示了一种非常奇怪的行为。我没有找到任何解释这种行为的方法。 简化的代码片段: val buf = new ListBuffer[Int]() buf ++= Seq...

7得票2回答
Swift中内部数组的本地引用

我来自C#世界,习惯了数组是引用类型。据我所知,在swift中,数组是值类型,但它们试图扮演引用类型的角色。 实际上,我不知道如何表达我的需求(我认为这种情况下需要知道答案才能问问题),但在C#中,我会说我需要将交错数组的内部数组的引用存储到本地变量中。 考虑以下代码: // a fun...

7得票5回答
可变类型的不可变视图

我有一个项目,需要在执行进程之前构建大量的配置数据。在配置阶段,将数据作为可变数据非常方便。但是,一旦配置完成,我希望将数据的不可变视图传递给功能过程,因为该过程将依赖于配置的不可变性进行许多计算(例如,基于初始配置预先计算事物的能力)。我已经提出了使用接口来公开只读视图的可能解决方案,但我想...