作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以,这是代码:
typedef enum{
zero, one, two, three, four, five, six, seven, eight, nine
}Digits;
typedef enum{
zero, one, two, nine
}DigitsThatILikeToUse;
问题: 如果我定义函数:
void takeMyFavoriteDigits(DigitsThatILikeToUse favorite); (C)
-|+(void) takeMyFavoriteDigits:(DigitsThatILikeToUse)favorite; (Objective-C)
我不能将它与对基本 enum Digits
的反向引用一起使用,因为我在 enum DigitsThatILikeToUse
中的顺序不同。
我的解决方案是像这样写出明确的数字位置:
typedef enum{
zero = 0, one = 1, two = 2, nine = 9
}DigitsThatILikeToUseInEdition;
但是!我无法遍历这个新的 enum DigitsThatILikeToUseInEdition
。
我想在 enum
中创建一个 subEnum
并遍历它。可能吗?
我最好的想法是使用这样的东西:
typedef enum{
beginIteratorDigitsThatILike, zero, one, two, nine, endIteratorDigitsThatILike, three, four, five, six, seven, eight
}Digits;
但也许有什么解决办法?
最佳答案
因为(大部分)没有任何问题不能通过添加更多的间接层来解决:
typedef enum enumDigits {
digitsNone = -1,
digitsZero, digitsOne, digitsTwo, digitsThree, digitsFour, digitsFive, digitsSix, digitsSeven, digitsEight, digitsNine,
digitsMax
} Digits_t;
typedef enum enumDigitsIndexIdLikeToUse {
digitsIndexIdLikeToUseNone = -1,
digitsIndexIdLikeToUseZero, digitsIndexIdLikeToUseOne, digitsIndexIdLikeToUseTwo, digitsIndexIdLikeToUseThree, digitsIndexIdLikeToUseFour,
digitsIndexIdLikeToUseMax
} DigitsIndexIdLikeToUse_t;
const Digits_t digitsIdLikeToUse[digitsIndexIdLikeToUseMax] = {
digitsZero, digitsOne, digitsTwo, digitsNine
}
假设你想使用至少 1 个 didigt,你可以这样做:
Digits_t digitIdLikeToUse = digitNone;
...
for (DigitsIndexIdLikeToUse_t digitIndexIdLikeToUse = digitsIndexIdLikeToUseZero, digit = digitsIdLikeToUse[digitIndexIdLikeToUse];
digitsIndexIdLikeToUse < digitsIndexIdLikeToUseMax;
++ digitsIndexIdLikeToUse)
{
<do something with digitIdLikeToUse>
}
关于objective-c - 枚举自定义 : Is it possible to create subEnum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13250491/
我是一名优秀的程序员,十分优秀!