gpt4 book ai didi

objective-c - 枚举自定义 : Is it possible to create subEnum?

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:01 25 4
gpt4 key购买 nike

所以,这是代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com