3 ms·
No a has the value [1,2,3] still in that scenario. Copy on assign semantics is for constants and mutable variables. Just tested in the playground: var a = [
by josephlord 12y ago
No a has the value [1,2,3] still in that scenario. Copy on assign semantics is for constants and mutable variables.
Just tested in the playground:
var a = [1,2,3]
var b = a
a == b // true
a === b // true
b[0] = 10
a // [1,2,3]
b // [10,2,3]
b[0] = 1
a == b // true
a === b // false
a // [1,2,3]
b // [1,2,3]
- tel 12y agoAh! Cool! My original point was always supposing that held. Being that it doesn't then I agree with Swift being consistent here. Observing sharing using (===) is still dangerous, but presumably that can be saved by wrapping it in sufficient warning.
- josephlord 12y agoI wouldn't recommend using === in production (except for objects of classes) either but for this demonstration it let me show the copy on write without going to assembly. Glad we've reached a common understanding, I wasn't quite sure that I hadn't missed something.