【问题标题】:A list or array of sequential integers顺序整数的列表或数组
【发布时间】:2012-07-27 18:53:39
【问题描述】:

我是 Objective-C 的新手,但我对 Ruby 有一定的了解。

我想要一个从 1、2、3、... 一直到 x 的数字列表/数组(x 是我代码中其他地方定义的最大值)。

最好的方法是什么(x 可能是数百万的高数,因此手动输入每个整数是不可取的)。数字顺序正常。

在 Ruby 中,我会这样写:

y = [1..x]

【问题讨论】:

标签: objective-c


【解决方案1】:

你真的需要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]]; }。但是谢谢你:)
  • @cyehia: for ... in 仅在值为对象时有效。但NSIndexSet 支持其他枚举,尤其是使用-enumerateIndexesUsingBlock: 和相关方法的基于块的枚举。
  • @cyehia 你能不能只做类似的事情:for (int x = tIndexSet.firstIndex; x <= tIndexSet.lastIndex; x++)
  • @FreeAsInBeer:如果索引集有间隙,则不会。你的增量步骤需要说x = [tIndexSet indexGreaterThanIndex:x]。如果你使用它,那么条件步骤应该是x != NSNotFound
  • @KevinBallard 好吧,从 OP 表达他的问题的方式来看,我认为没有间隙。
猜你喜欢
  • 2012-05-01
  • 2019-12-06
  • 2020-01-26
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
相关资源
最近更新 更多