我对Swift很新,Obj-c直到现在才是我的首选语言,但我决定切换。我读了一本关于Swift的书,我对阵列分配操作有疑问。
我读到数组通常是通过引用分配的,直到你执行一些改变元素数的操作。但问题是:
C ++旧代码
int a[10];
int b[10];
// init a and b
int* p;
if(...)
p = a;
else
p = b;
// do something with p
此时a
或b
(取决于if
)会被修改。
上面的例子适用于Swift,因为没有做任何操作来改变数组的长度,但问题是:有没有办法在Swift中做一些事情,即使你改变长度也使用引用?
此论坛中的许多人建议重新分配:
var a: [Int] = ...
var b: [Int] = ...
if ... {
c = a
}
else {
c = b
}
// do something with c, maybe extend c
然后
if ... {
a = c
}
else {
b = c
}
但是......我发现这个双重检查(拖曳if
s)令人讨厌和丑陋...我不想相信Swift没有一些像指针一样的操作符: - )