fad*_*bee 6 functional-programming scala immutability scala-collections
我正在评估Scala,并且我的不可变集合存在问题.
我想制作完全不可变的不可变集合,直到所有包含的对象,它们引用的对象,无限制.
有一个简单的方法吗?
http://www.finalcog.com/immutable-containers-scala上的代码说明了我正在努力实现的目标,以及令人讨厌的工作(ImmutablePoint).
解决方法的问题是,每次我想要更改对象时,我都必须手动创建新副本.我知道运行时必须实现copy-on-write,但这对开发人员是否透明?
我想我正在寻找制作不可变对象,其中方法改变当前对象状态,但对象的所有其他'val'(和所有不可变容器)引用保持'旧'状态.
通过一些特定的语言构造,scala不可能开箱即用,除非你已经遵循了所有对象都是不可变的习惯用法,在这种情况下这种行为是免费的!
使用2.8,从可读性的角度来看,命名参数使得"复制构造函数"非常好用.但你是对的,这可以作为写时复制.您要求的行为,"当前"对象是唯一一个变异的行为完全违背了JVM的工作方式,不幸的是(对您而言)!
实际上,"当前对象"一词毫无意义; 你的意思是"当前参考 "!所有其他引用(在当前词法范围之外)指向同一个对象,erm,指向同一个对象!只有一个对象!
因此,从当前词法范围的角度来看,这个对象似乎不可能是可变的,但对其他人来说是不可变的