![]() |
1
11
失败。 |
![]() |
2
2
在你的例子中
你需要一个
|
![]() |
3
1
而且不能将新元素赋给旧元组,因为它们是不可变的。例如,您不能这样做:
运行update时,不更改元组中的引用,只更改引用后面的对象。你也可以这样做:
正如你看到的,你没有改变元组,但是
不一样,因为
|
![]() |
4
0
|
![]() |
5
0
元组是不可变的,因此不能为其重新赋值。但是如果一个元组包含一个可变类型,比如list或set,那么u可以更新它们。 现在,在您使用“|=”的情况下,实际上首先更新集合(它是元组中的一个值),然后将它赋给导致异常的元组。 更新集合后引发异常。 |
![]() |
6
0
因为有多重副作用。尽量避免这样。 这就是
对的。首先进行突变。 然后尝试元组突变,但失败了。
对的。这一套是变异的。 不,第一个语句涉及显式赋值——更改元组——这是禁止的。 第二个语句更新一个不可变元组的成员,这是一个不被禁止的操作,但在推信封时是可疑的。 但是 法家学者认为,他们不应该是一样的吗?还是类似的?不。 禁止更新元组对象(通过赋值)。 不禁止更新现有元组对象的成员(通过mutator函数)。 |
![]() |
7
0
这就解释了你所观察到的行为。
元组项应为
|
![]() |
8
0
最好的解释方法是用“代数”来表示:
请注意,为了简单起见,对问题没有帮助的扩展不会被扩展(例如
|