Questions tagged «mutable»

可变项可以在创建后进行修改。

13
列表更改列表意外地反映在子列表中
我需要在Python中创建列表列表,因此输入了以下内容: myList = [[1] * 4] * 3 该列表如下所示: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] 然后,我更改了最内在的值之一: myList[0][0] = 5 现在我的列表如下所示: [[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]] 这不是我想要或期望的。有人可以解释发生了什么,以及如何解决吗?

18
除了允许变量由const函数修改之外,“ mutable”关键字是否还有其他用途?
不久前,我遇到了一些代码,这些代码用mutable关键字标记了一个类的成员变量。据我所知,它只是允许您修改const方法中的变量: class Foo { private: mutable bool done_; public: void doSomething() const { ...; done_ = true; } }; 这是此关键字的唯一用途还是它所不及的?此后,我在一个类中使用了此技术,将a标记boost::mutex为可变的,允许const函数出于线程安全的原因将其锁定,但是,老实说,这有点像hack。
527 c++  keyword  mutable 



16
不可变与可变类型
我对什么是不可变类型感到困惑。我知道该float对象被认为是不可变的,在我的书中有这样的例子: class RoundFloat(float): def __new__(cls, val): return float.__new__(cls, round(val, 2)) 由于类的结构/层次结构,这是否被认为是不可变的?意思float是在类的顶部,是它自己的方法调用。类似于此类示例(即使我的书说的dict是可变的): class SortedKeyDict(dict): def __new__(cls, val): return dict.__new__(cls, val.clear()) 可变的东西在类内部具有方法,例如以下类型: class SortedKeyDict_a(dict): def example(self): return self.keys() 另外,对于最后一个class(SortedKeyDict_a),如果我将这种类型的set传递给它: d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2)) 不调用该example方法,它返回一个字典。在SortedKeyDict用__new__其标记为错误。我尝试使用将整数传递给RoundFloat类,__new__并且它未标记任何错误。

10
可变对象与不可变对象
我试图让我了解可变对象和不可变对象。使用可变对象会带来很多负面影响(例如,从方法中返回字符串数组),但是我很难理解它的负面影响。使用可变对象的最佳实践是什么?您是否应尽可能避免使用它们?

10
Python中存在可变的命名元组吗?
任何人都可以修改namedtuple或提供替代类,以使其适用于可变对象吗? 主要是为了提高可读性,我想要执行类似于namedtuple的操作: from Camelot import namedgroup Point = namedgroup('Point', ['x', 'y']) p = Point(0, 0) p.x = 10 >>> p Point(x=10, y=0) >>> p.x *= 10 Point(x=100, y=0) 腌制所得物体必须是可能的。并且根据命名元组的特征,在表示对象时输出的顺序必须与构造对象时参数列表的顺序相匹配。

10
是整数不可变
我知道这可能很愚蠢,但是很多地方都声称Java中的Integer类是不可变的,但是下面的代码: Integer a=3; Integer b=3; a+=b; System.out.println(a); 毫无困难地执行(给出预期的结果)6。因此有效地改变了a的值。这不是说Integer是可变的吗?第二个问题和一点题外话:“不变的类不需要复制构造函数”。有人在乎解释原因吗?

7
Swift中的不可变/可变集合
我指的是Apple的Swift编程指南,用于理解以Swift语言创建可变/不可变对象(数组,字典,集合,数据)。但是我不明白如何在Swift中创建一个不可变的集合。 我希望在Objective-C中看到以下Swift中的等效项 不变数组 NSArray *imArray = [[NSArray alloc]initWithObjects:@"First",@"Second",@"Third",nil]; 可变数组 NSMutableArray *mArray = [[NSMutableArray alloc]initWithObjects:@"First",@"Second",@"Third",nil]; [mArray addObject:@"Fourth"]; 不变字典 NSDictionary *imDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Value1", @"Key1", @"Value2", @"Key2", nil]; 可变字典 NSMutableDictionary *mDictionary = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Value1", @"Key1", @"Value2", @"Key2", nil]; [mDictionary setObject:@"Value3" forKey:@"Key3"];

6
C ++中的volatile与可变
我对volatile和mutable之间的区别有疑问。我注意到两者都意味着可以对其进行更改。还有什么?它们是一样的吗?有什么不同?它们在哪里适用?为什么提出这两个想法?如何以不同方式使用它们? 非常感谢。
85 c++  volatile  mutable 

6
从数组创建可变列表?
我有一个要转换为的数组List,以修改数组的内容。 堆栈溢出有大量的问题/答案的该地址Arrays.asList(),以及它如何仅提供底层阵列的列表视图,以及如何试图操纵所得列表将通常抛出UnsupportedOperationException如用来操纵列表(例如方法add(),remove()等)是未由提供的List实现实现Arrays.asList()。 但是我找不到如何将数组变成可变列表的示例。我想我可以遍历数组和put()每个值到一个新的List中,但是我想知道是否存在一个接口可以为我执行此操作。
84 java  arrays  list  mutable 

5
F#:让可变与引用
首先,我承认这个问题可能是重复的;让我知道。 我很好奇在需要可变性的情况下通常的“最佳实践”是什么。F#为此提供了两种功能:let mutable绑定(似乎在“大多数”语言中像变量一样工作ref)以及需要显式取消引用才能使用的引用单元格(通过函数创建)。 有一对夫妇的情况下,其中一个是“被迫”转化为一种或另一种:.NET互操作倾向于使用可变带<-,并在工作流程的计算必须使用ref带:=。因此,这些情况非常明确,但是我很好奇在这些情况之外创建自己的可变变量时该怎么做。一种风格比另一种有什么优势?(也许对实现有进一步的了解会有所帮助。) 谢谢!
82 f#  mutable 

6
可变函数参数默认值的好用法?
在Python中,将可变对象设置为函数中参数的默认值是一个常见错误。这是David Goodger的出色文章中的一个例子: >>> def bad_append(new_item, a_list=[]): a_list.append(new_item) return a_list >>> print bad_append('one') ['one'] >>> print bad_append('two') ['one', 'two'] 为什么发生这种情况的解释在这里。 现在我的问题是:这种语法是否有很好的用例? 我的意思是,如果每个遇到此错误的人都犯了同样的错误,对其进行调试,了解了问题并从此试图避免它,那么这种语法有什么用?



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.