草庐IT

Immutable

全部标签

swift - 如何修复 'can not use mutating member on immutable value' ?

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭5年前。Improvethisquestion获取错误:Error:cannotusemutatingmemberonimmutablevalue:'fromArray'isa'let'constant在下面的代码中:funcremoving(item:Int,fromArray:[Int])->[

swift - 为什么不可变对象(immutable对象)的属性在 Swift 中是可变的?

在Swift中,我们用let表示一个不可变变量。我不明白的是为什么要更改它们的属性。例如:letlbl=UILabel()lbl.textAlignment=.Right()为什么可以更改textAlignment?通过改变属性,我们不是也改变了应该是常量的变量lbl吗? 最佳答案 根据SwiftProgrammingLanguage,常量结构的属性也是常量,但常量类可以具有可变属性。用他们的话来说,Ifyoucreateaninstanceofastructureandassignthatinstancetoaconstant,y

swift - 无法分配给属性 : function call returns immutable value

考虑以下示例。structAStruct{vari=0}classAClass{vari=0vara:A=A(i:8)funcaStruct()->AStruct{returna}}如果我尝试改变AClass类实例的变量,它会成功编译。varca=AClass()ca.a.i=7但是如果我尝试改变aStruct方法的返回值,编译会尖叫ca.aStruct().i=8//Compileerror.Cannotassigntoproperty:functioncallreturnsimmutablevalue.谁能解释一下。 最佳答案

java - 如何操作不可变对象(immutable对象)树?

我正在使用不可变对象(immutable对象)构建整个应用程序,以便更容易实现多线程和撤消。我正在使用GoogleCollectionsLibrary它提供了不可变版本的Map、List和Set。我的应用程序模型看起来像一棵树:场景是包​​含对根节点的引用的顶级对象。每个节点都可以包含子节点和端口。对象图可能如下所示:Scene|+--Node|+--Node|+-Port+--Node|+-Port+-Port如果所有这些对象都是不可变的,由顶级SceneController对象控制:构建此层次结构的最佳方式是什么?如何替换对象树中任意深度的对象?有没有办法支持反向链接,例如具有“父

java - 如何在 Java 代码中使用 scala.collection.immutable.List

我需要编写一段代码来比较Java的ArrayList和Scala的List的性能。我很难让ScalaList在我的Java代码中工作。有人可以发布一个真正简单的“helloworld”示例,说明如何用java代码(在.java文件中)创建ScalaList并将100个随机数添加到是吗?PS:我Java比较好,但是没用过Scala。 最佳答案 从java内部使用scala.collection.JavaConversions。例如,创建一个嵌套的Scala案例类,在其构造函数中需要一个Scala列表:caseclassCardDraw

python - Python 中的不可变对象(immutable对象)可能具有弱引用

几年来,我一直在对tuple进行子类化或使用namedtuple,但现在我有一个用例,我需要一个可以用作弱参照物。今天我学会了tuplesdon'tsupportweakreferences.是否有另一种方法可以在Python中创建具有固定属性集的不可变对象(immutable对象)?我不需要元组的数字索引或可变宽度。classSimpleThingWithMethods(object):def__init__(self,n,x):#Ijustneedtostorenandxasread-onlyattributes...???...我想这提出了一个显而易见的问题,即为什么不可变;“P

python - 在 python 中将可变对象锁定为不可变对象(immutable对象)

如何在Python中“锁定”一个对象?假设我有:classFoo:def__init__(self):self.bar=[]self.qnx=10我会尽可能多地修改foo:foo=Foo()foo.bar.append('blah')foo.qnx=20但是我希望能够“锁定”它,以便在我尝试时lock(foo)foo.bar.append('blah')#raisessomeexception.foo.qnx=20#raisessomeexception.这在Python中可能吗? 最佳答案 这是一个简单的方法。classFoo(o

python - 将现有对象重用于不可变对象(immutable对象)?

在Python中,如何重用现有的相等不可变对象(immutable对象)(就像对str所做的那样)?这是否可以通过定义一个__hash__方法来完成,还是需要更复杂的措施? 最佳答案 如果你想通过类构造函数创建并让它返回一个以前创建的对象,那么你需要提供一个__new__方法(因为当你到达__init__对象已经被创建)。这是一个简单的例子——如果用于初始化的值之前已经被看到,那么返回一个以前创建的对象而不是一个新创建的对象:classCached(object):"""Simpleexampleofimmutableobjectr

ios - 发送到不可变对象(immutable对象)的变异方法

当我第一次使用这个方法时它工作正常,但是当我第二次调用它时我得到错误“将方法发送到不可变对象(immutable对象)”。问题与“addObject”命令一致。-(IBAction)save:(id)sender{NSMutableArray*placesT=[[NSUserDefaultsstandardUserDefaults]objectForKey:@"placesT"];if(!placesT){placesT=[[[NSMutableArrayalloc]init]autorelease];}[placesTaddObject:[NSStringstringWithForm

ios - NSMutableDictionary:发送到不可变对象(immutable对象)的变异方法

以下代码在尝试移除ObjectForKey时返回异常,并显示以下错误消息“将方法发送到不可变对象(immutable对象)”NSMutableDictionary*storedIpDictionary=(NSMutableDictionary*)[[NSUserDefaultsstandardUserDefaults]dictionaryForKey:@"dictDeviceIp"];NSString*key=self.currentDeviceNameText.text;NSString*ipAddressTemp=[storedIpDictionaryobjectForKey:ke