草庐IT

immutability

全部标签

javascript - 我如何解决 moment.js 中的可变性问题?

我遇到了一个问题,我必须存储一个moment对象的初始值,但我在阻止我的变量随原始对象一起改变时遇到了一些麻烦。不幸的是Object.freeze()不起作用,因为当我尝试格式化时moment.js返回一个Invaliddate错误。 最佳答案 NPM上有一个名为frozen-moment的Moment.js插件-您可以使用moment().freeze()代替Object.freeze(moment())。否则,普通的Moment.js有一个clone方法可以帮助您避免可变性问题,因此您可以这样做:vara=moment(),b=

javascript - 我如何解决 moment.js 中的可变性问题?

我遇到了一个问题,我必须存储一个moment对象的初始值,但我在阻止我的变量随原始对象一起改变时遇到了一些麻烦。不幸的是Object.freeze()不起作用,因为当我尝试格式化时moment.js返回一个Invaliddate错误。 最佳答案 NPM上有一个名为frozen-moment的Moment.js插件-您可以使用moment().freeze()代替Object.freeze(moment())。否则,普通的Moment.js有一个clone方法可以帮助您避免可变性问题,因此您可以这样做:vara=moment(),b=

javascript - 带有 ES6 的 Javascript 中的枚举

我正在用Javascript重建一个旧的Java项目,并意识到在JS中没有做枚举的好方法。我能想到的最好的是:constColors={RED:Symbol("red"),BLUE:Symbol("blue"),GREEN:Symbol("green")};Object.freeze(Colors);const可以防止Colors被重新分配,卡住它可以防止改变键和值。我正在使用Symbols,因此Colors.RED不等于0或除自身之外的任何其他内容。这个公式有问题吗?有没有更好的方法?(我知道这个问题有点重复,但是所有的previousQ/As都很旧,ES6给了我们一些新的能力。)编

javascript - 带有 ES6 的 Javascript 中的枚举

我正在用Javascript重建一个旧的Java项目,并意识到在JS中没有做枚举的好方法。我能想到的最好的是:constColors={RED:Symbol("red"),BLUE:Symbol("blue"),GREEN:Symbol("green")};Object.freeze(Colors);const可以防止Colors被重新分配,卡住它可以防止改变键和值。我正在使用Symbols,因此Colors.RED不等于0或除自身之外的任何其他内容。这个公式有问题吗?有没有更好的方法?(我知道这个问题有点重复,但是所有的previousQ/As都很旧,ES6给了我们一些新的能力。)编

Android13 Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE

最近把以前的11的代码移植到13上碰到的问题,记录一下:TargetingS+(version31andabove)requiresthatoneofFLAG_IMMUTABLEorFLAG_MUTABLEbespecifiedwhencreatingaPendingIntent.StronglyconsiderusingFLAG_IMMUTABLE,onlyuseFLAG_MUTABLEifsomefunctionalitydependsonthePendingIntentbeingmutable,e.g.ifitneedstobeusedwithinlinerepliesorbubbles

performance - Scala:可变对象与不可变对象(immutable对象)性能 - OutOfMemoryError

我想在scala中比较不可变的.map和可变的.map的性能特征,以便进行类似的操作(即将多个映射合并为一个映射)。请参见)。对于可变映射和不可变映射,我有类似的实现(见下文)。作为一个测试,我生成了一个包含1000000个单项映射[int,int]的列表,并将这个列表传递到我测试的函数中。有了足够的内存,结果就不足为奇了:对于mutable.map,大约1200毫秒;对于unmutable.map,大约1800毫秒;对于使用mutable.map的命令式实现,大约750毫秒;map——不确定是什么造成了巨大的差异,但也可以对此发表评论。让我有点吃惊的是,也许因为我有点厚,在Intel

performance - Scala:可变对象与不可变对象(immutable对象)性能 - OutOfMemoryError

我想在scala中比较不可变的.map和可变的.map的性能特征,以便进行类似的操作(即将多个映射合并为一个映射)。请参见)。对于可变映射和不可变映射,我有类似的实现(见下文)。作为一个测试,我生成了一个包含1000000个单项映射[int,int]的列表,并将这个列表传递到我测试的函数中。有了足够的内存,结果就不足为奇了:对于mutable.map,大约1200毫秒;对于unmutable.map,大约1800毫秒;对于使用mutable.map的命令式实现,大约750毫秒;map——不确定是什么造成了巨大的差异,但也可以对此发表评论。让我有点吃惊的是,也许因为我有点厚,在Intel

java - 为什么继续对不可变对象(immutable对象)使用 getter?

使用不可变对象(immutable对象)已变得越来越普遍,即使手头的程序从未打算并行运行。然而我们仍然使用getter,每个字段需要3行样板代码,每次访问需要5个额外字符(使用您最喜欢的主流OO语言)。虽然这看起来微不足道,而且许多编辑器无论如何都减轻了程序员的大部分负担,但这似乎仍然是不必要的努力。继续使用访问器而不是直接访问不可变对象(immutable对象)的原因是什么?具体来说,强制用户使用访问器(对于客户端或库编写器)有什么好处,如果是,它们是什么?请注意,我指的是不可变对象,与question不同,它指的是一般的对象。需要明确的是,不可变对象(immutable对象)没有s

java - 为什么继续对不可变对象(immutable对象)使用 getter?

使用不可变对象(immutable对象)已变得越来越普遍,即使手头的程序从未打算并行运行。然而我们仍然使用getter,每个字段需要3行样板代码,每次访问需要5个额外字符(使用您最喜欢的主流OO语言)。虽然这看起来微不足道,而且许多编辑器无论如何都减轻了程序员的大部分负担,但这似乎仍然是不必要的努力。继续使用访问器而不是直接访问不可变对象(immutable对象)的原因是什么?具体来说,强制用户使用访问器(对于客户端或库编写器)有什么好处,如果是,它们是什么?请注意,我指的是不可变对象,与question不同,它指的是一般的对象。需要明确的是,不可变对象(immutable对象)没有s

java - 字符串不可变的非技术优势

我想知道从程序员的角度来看字符串类型不变的好处。技术优势(在编译器/语言方面)可以概括为,如果类型是不可变的,则更容易进行优化。阅读here以获得相关问题。同样,在可变的字符串类型中,要么您已经内置了线程安全性(然后又很难进行优化),要么您必须自己进行。无论如何,您都可以选择使用具有内置线程安全性的可变字符串类型,因此这并不是可变字符串类型的真正优势。(同样,更容易进行处理和优化以确保不可变类型上的线程安全,但这不是重点。)但是,不可变字符串类型在用法中有什么好处?某些类型不可变的意义何在?这对我来说似乎很矛盾。在C++中,如果我想使某些字符串不可变,则将其作为对函数的const引用(