2
在迅速,我总是用C表示法等:为了在循环中迅速与动态范围
for (var i=0;i<mybuffer.count;i++) {}
现在,在3.0这不能被使用。 的问题是,使用
for i in..<mybuffer.count {}
不会检查mybuffer.count的值对于每次迭代,这导致索引超出范围,以防mybuffer.count变化。
有没有办法解决这个问题?
我可以使用一个while语句,但我想必须有一种方法来使用动态范围循环,对吧?
有没有被这样的事情。通常,不鼓励修改循环中数组的大小。这是C中错误的常见来源,因为它会创建棘手的角落案例(在使用NSMutableArray的ObjC中执行此操作是错误的)。在大多数情况下,Swift推动你将'mybuffer'视为不可变的,并创建一个新的数组(使用'map'等工具)。仍然有可能以另一种方式(在某些情况下有充分的理由),但它通过要求“while”语法突出。 –
@RobNapier这与Objective-C中的'NSMutableArray'不是一个错误。这只会是快速枚举的问题,而不是“循环”的“正常”。 – rmaddy