【发布时间】:2012-07-27 18:53:39
【问题描述】:
我是 Objective-C 的新手,但我对 Ruby 有一定的了解。
我想要一个从 1、2、3、... 一直到 x 的数字列表/数组(x 是我代码中其他地方定义的最大值)。
最好的方法是什么(x 可能是数百万的高数,因此手动输入每个整数是不可取的)。数字顺序正常。
在 Ruby 中,我会这样写:
y = [1..x]
【问题讨论】:
标签: objective-c
我是 Objective-C 的新手,但我对 Ruby 有一定的了解。
我想要一个从 1、2、3、... 一直到 x 的数字列表/数组(x 是我代码中其他地方定义的最大值)。
最好的方法是什么(x 可能是数百万的高数,因此手动输入每个整数是不可取的)。数字顺序正常。
在 Ruby 中,我会这样写:
y = [1..x]
【问题讨论】:
标签: objective-c
你真的需要NSArray,还是只需要一个代表这个范围的对象?如果是后者,可以使用NSIndexSet,如
NSIndexSet *idxSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, x-1)];
如果您确实需要NSArray,那么 Josh Caswell 的链接可能是您最好的选择。
【讨论】:
NSIndexSet 看起来很有希望,但似乎我无法在“for ... in”块中进行正确的枚举(至少我知道如何)。我将使用 Josh 链接的 for (int i = 1; i < x; ++i) { [anArray addObject:[NSNumber numberWithInt:i]]; }。但是谢谢你:)
for ... in 仅在值为对象时有效。但NSIndexSet 支持其他枚举,尤其是使用-enumerateIndexesUsingBlock: 和相关方法的基于块的枚举。
for (int x = tIndexSet.firstIndex; x <= tIndexSet.lastIndex; x++)?
x = [tIndexSet indexGreaterThanIndex:x]。如果你使用它,那么条件步骤应该是x != NSNotFound