immutability相关内容

不可变numpy的阵列?

有一个简单的方法来创建一个不可变的numpy的阵列? 如果一个人得出从 ndarray A类来做到这一点,什么是最低限度的方法,一个具有覆盖达到不变性? 解决方案 您可以做一个numpy的阵列不可写: A = np.arange(10) a.flags.writeable =假 一个[0] = 1 #给出:RuntimeError:数组是不可写 也看到了这一主题的讨论: ..
发布时间:2016-05-30 22:30:36 Python

在Java中不可变的数组

有Java中的基本数组不可改变的选择吗?制作一个基本数组最后实际上并不prevent一个来自做这样的事情。 最终诠释[]数组=新INT [] {0,1,2,3}; 数组[0] = 42; 我想要的数组中的元素是不可改变的。 解决方案 不带基本数组。你需要使用一个列表或者其他一些数据结构:列表<整数GT;项= Collections.unmodifiableList(Arrays.a ..
发布时间:2016-05-30 21:08:02 Java开发

序列化不可改变的Java类动作与LCDS

我有它正在由LCDS DataService的数据管理管理,并正在创建/使用自定义装配更新等一个复杂的对象。对象层次的绝大多数是被序列化/反序列化正确的,但我已经打了一个绊脚石,当涉及到序列化不可改变的Java类。 在一个Java唯一的世界我会使用java writeReplace和readResolve方法来为这个优秀的博客描述:这就是我最初写我的java类,预期的LiveCycle调用wri ..
发布时间:2015-11-28 21:05:41 Java开发

任何约定一个IEnumerable< T>报告不变性等特点?

在很多情况下,code将收到的IEnumerable< T> ,并希望坚持所载物品的序列。要做到这一点的常用方法是调用了ToList 就可以了。如果有问题的实施已经是一个不可变的列表,但是,调用了ToList 上就有些浪费。 如果我只路过的集合只在我的code,我可以定义使用扩展方法,这将将传递一个的IEnumerable< T> 的T> (实现 Supercat. ..
发布时间:2015-11-27 11:21:36 C#/.NET

是字典损坏或应GetHash上永恒不变的会员code()只有基地?

当一个对象被添加到.NET 借助 GetHash code 的文件说: 在GetHash code方法的对象必须一致地返回相同的散列code,只要没有修改对象的状态,确定对象的equals方法的返回值。 因此​​,根据 GetHash code 文档,散列code可以随时更改的平等 - 确定状态发生变化,但在词典的实施做不支持的。 是当前.NET字典实现破的,因为它错误地忽视了哈希cod ..
发布时间:2015-11-26 21:06:11 C#/.NET

使对象不可变的,在运行时[C#]

有什么办法(利用反射我希望),我可以做一个实例化的对象不可变的以及所有的公共属性?我从别人的codeBase的(没有可用的源代码),我需要利用我基本上是想如果有一块code的任何地方尝试之后,调用这个类中的公共setter方法​​的异常被抛出一类已被实例化。 注:我不想为了实现这个创建类的一个封装的对象。我懒。 解决方案 没有有通过反射不是。类型定义不能在经由反射运行时被改变,因此它不能被用 ..
发布时间:2015-11-26 19:36:53 C#/.NET

什么是重presenting不可变列表中的.NET最好的方法是什么?

我最近开始使用F#为“真正的工作”,并重新找回了不可改变的数据结构之美,如F#中可识别联合和记录。我还发现他们是很简单的从C#来使用,尤其是当他们并不需要在F#运行任何直接的相关性。但是,当涉及到重新presenting列出了这些结构,我还没有找到一个理想的解决方案。 我的第一次尝试键入列为SEQ<'一>(IEnumerable的在C#世界),它提供了一个很好的常规采集接口没有出口任何方法 ..
发布时间:2015-11-26 18:15:08 C#/.NET

字符串不变性

由语句是否字符串不变性的工作,或在一份声明中字符串? 例如,据我所知,下面的code将拨出两个字符串在堆上。 字符串s =“你好”; S + =“的世界!”; “你好”将留在堆中,直到垃圾回收;现在S变量“世界,你好!”在堆上。然而,有多少串并以下行分配堆... 1或2?此外,有没有一个工具/方法来验证结果? 字符串s =“再见”+“残酷的世界!” 解决方案 编译器有对字符串 ..
发布时间:2015-11-26 16:49:11 C#/.NET

.NET的ORM,不可变的值对象,结构,默认构造,和只读属性

我刚开始接触.NET的ORM,到了那里我还没有实体框架和NHibernate的决定点。但在这两种情况下,我运行到一个问题,即他们似乎想让我妥协以各种方式我的域模型的完整性,特别是在C#对象设计的细微之处。这是关于这个问题的几个问题之一。 我很习惯在适当的物业,看起来像这样的模式执行不变性: 公共类Foo { 私人只读串吧; 公共字符串吧{返回this.bar; } 公 ..
发布时间:2015-11-26 00:54:31 C#/.NET

不可变字典VS字典VS C5 VS F# - 性能

我们的应用程序使用大量的具有多层次的查找不经常改变的字典。我们正在调查,在把一些关键的code表示不使用字典使用备用的结构进行了大量的查找 - 更快的查找,光对内存/ GC。这让我们比较一下各种字典/可用库 - 词典(System.Collections.Generics.Dictionary - SCGD),ImmutableDictionary,C5.HashDictionary,FSharp ..
发布时间:2015-11-26 00:49:17 C#/.NET

可变VS不可变的并行应用程序

在应用程序我写,我需要写大量的基本类型,这将很可能是不可改变的。但我想知道类型的并行应用程序,以不变的人如何可变的比较。 您可以使用锁与可变对象,对不对?它是如何比较与不变类型的并行应用程序中使用的其他技术? 您至少远离使用锁与稳定的类型,对吧? 解决方案 类型 使用不变类型尽可能。 使用线程安全的集合,而不是明确的锁定尽可能多地。 在仅使用可变类型时,你有没有其他合理的选择。 主题 ..
发布时间:2015-11-26 00:29:38 C#/.NET

任何微弱的实习集合(对不可变对象)

在涉及不变的对象某些情况下,将有可能对许多不同的对象,以进入存在其中具有相同的语义。一个简单的例子是阅读文本的多行从一个文件转换为字符串。从程序的角度看,一个事实,即两行具有相同的字符序列将是“巧合”,但是从程序员的角度的大量复制的可预期。如果多串情况下是相同的,改变引用的不同实例为引用单个实例可以节省内存,同时也将促进它们之间的比较(如果两个字符串引用指向相同的字符串,就没有必要做一个chara ..
发布时间:2015-11-26 00:24:27 C#/.NET

永恒的真正定义是什么?

我想知道如何不变性的定义?如果值不公开为公,所以不能被修改,那么它是足够了吗? 能的值来内型改性,而不是由类型的客户? 或者可以在一个只有一个构造函数中设置呢?如果是这样,在双初始化的情况下(使用的结构这关键字等)仍然是确定恒定类型? 我怎么能保证类型是100%的不可变的? 解决方案 如果该值不公开为公,所以不能被修改,那么它是足够了吗? 没有,因为你需要读取权限。 能的值来 ..
发布时间:2015-11-26 00:19:12 C#/.NET

单独使用接口读写关注的最好方法?

最近我一直在实现的利益(有些人认为过度使用)不可变对象大幅减少在我的对象模型读写依赖问题及其产生的条件和副作用,最终使code易于管理(一种功能性编程去年秋季的)。 这种做法使我产生在创建/施工时提供值只读对象,然后使仅公开干将外部呼叫者可以访问属性。受保护的,内部和私人制定者允许维持在写对象模型的内部控制。 在创建接口,同时使一个API,在我的对象模型,我已经开始考虑有关不变性同样的问题。例 ..
发布时间:2015-11-25 23:59:10 C#/.NET

什么是在.NET中使用System.String.Copy的?

我恐怕这是一个非常愚蠢的问题,但我一定是失去了一些东西。 为什么也许有希望使用 String.Copy(串)? 该文件说,该方法 创建一个字符串的一个新的实例 相同的值作为指定String 由于字符串是不可变的。NET,我不知道什么是使用这种方法的好处,因为我觉得 字符串拷贝= String.Copy(otherString); 将所有的实际目的似乎得到相同的结果 字符串拷 ..
发布时间:2015-11-25 23:48:58 C#/.NET

如何处理返回结构的永恒?

我正在写一个游戏,有“细胞”的一个巨大的二维数组。一个单元只需要3个字节。我也有一类称为CellMap,其中包含了二维数组作为私人领域,并通过一个公共索引提供对它的访问。 探查表明,性能问题是由于过多的Cell对象的垃圾回收。所以,我决定做一个细胞结构(这是一个类)。 但是,现在code这样不起作用: cellMap [X,Y]。人口++; 我能想到的很多选择,但我真的不喜欢任何人 ..
发布时间:2015-11-25 23:45:31 C#/.NET

不可变的数据结构的性能

我不明白怎么能东西作为一个集是不变的,还有一个可接受的性能。 这是我读过的F#中集内部使用红黑树及其实施。如果我们要添加一些新的红色黑树,我们必须从根本上重新创建它每一次,怎么能有过不错的表现?我缺少的是在这里吗? 虽然我是问这对F#的设置,我觉得这是有或使用不可变的数据结构的任何其他语言相关的。 感谢 解决方案 几乎所有的不可变的集合是某种形式的平衡树。要创建一个新的树,你要重新分配路 ..
发布时间:2015-11-25 23:32:34 C#/.NET

字符串VS类时都是引用类型

这是我最后一次采访了如何去: 问:在哪里字符串存储在哪里? 答:堆,因为它是引用类型 问:解释我这下code: 静态无效的主要(字串[] args) { 串的一个=“测试”; 线二=之一; 1 =一个+“串”; Console.WriteLine(“一个是{0}”,一个); Console.WriteLine(“二是{0}”,二); } ..
发布时间:2015-11-25 23:29:46 C#/.NET

如何线程安全是不可变的对象?

都说不可变对象是线程安全的,但是这是为什么? 取在多核CPU上运行以下情形: 核心1为内存位置读取一个对象的0x100 并缓存在核心1的L1 / L2高速缓存; 在GC的位置内存收集这些对象,因为它已成为资格和的0x100 可用于新的对象; 在酷睿2的分配(immutable)的对象,它位于地址的0x100 ; 核心1获取一个对这个新对象,并在内存中的位置的0x100 读取它。 在这种情况下 ..
发布时间:2015-11-25 15:05:54 C#/.NET