首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历枚举值

遍历枚举值
EN

Stack Overflow用户
提问于 2009-11-03 01:56:02
回答 9查看 67.5K关注 0票数 40

是否可以遍历Objective-C中的枚举值?

EN

回答 9

Stack Overflow用户

发布于 2009-11-03 03:15:40

给定的

代码语言:javascript
复制
enum Foo {Bar=0,Baz,...,Last};

您可以像这样迭代元素:

代码语言:javascript
复制
for(int i=Bar; i<=Last; i++) {
  ...
}

请注意,这暴露了C枚举的just-an-int性质。特别是,您可以看到C枚举并不真正提供类型安全,因为您可以使用int代替枚举值,反之亦然。此外,这取决于枚举值的声明顺序:至少可以说是脆弱的。此外,请参阅Chuck的注释;如果枚举项目是不连续的(例如,因为您为某些项目指定了显式的、非连续的值),这将根本不起作用。啊呀。

票数 49
EN

Stack Overflow用户

发布于 2009-11-03 02:02:12

如果您的枚举定义如下:

代码语言:javascript
复制
enum Direction {  East,  West,  North,  South};

你可以这样遍历它:

代码语言:javascript
复制
for ( int direction = East; direction <= South; ++direction)
{
   /* Do something with Direction
}
票数 9
EN

Stack Overflow用户

发布于 2009-11-03 03:43:12

这有点杂乱无章(就像整个概念一样……嗯……)但是如果你要多次这样做,并且你希望能够处理不连续枚举的可能性,你可以创建一个(全局常量)数组,并(使用ennukiller的例子)方向directions4 ={东,西,北,南};然后在你的循环中,你可以谈论directionsi,而不是直接迭代方向本身……

就像我说的,它很丑陋,但我认为它不那么脆弱……

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1662719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档