objective-c – 枚举自定义:是否可以创建subEnum?
发布时间:2020-12-16 07:02:03 所属栏目:百科 来源:网络整理
导读:所以,这是代码: typedef enum{ zero,one,two,three,four,five,six,seven,eight,nine}Digits;typedef enum{ zero,nine }DigitsThatILikeToUse; 问题: ????如果我定义功能: void takeMyFavoriteDigits(DigitsThatILikeToUse favorite); (C)-|+(void) takeMy
所以,这是代码:
typedef enum{ zero,one,two,three,four,five,six,seven,eight,nine }Digits; typedef enum{ zero,nine }DigitsThatILikeToUse; 问题: void takeMyFavoriteDigits(DigitsThatILikeToUse favorite); (C) -|+(void) takeMyFavoriteDigits:(DigitsThatILikeToUse)favorite; (Objective-C) 我不能将它用于对基本枚举数字的反向引用,因为我在枚举DigitsThatILikeToUse中的顺序是不同的. 我的解决方案是写出这样的数字的明确位置: typedef enum{ zero = 0,one = 1,two = 2,nine = 9 }DigitsThatILikeToUseInEdition; 但!我不能遍历这个新的枚举DigitsThatILikeToUseInEdition. 我想在枚举中创建一个subEnum并迭代它.可能吗? 我最好的想法是使用这样的东西: typedef enum{ beginIteratorDigitsThatILike,zero,nine,endIteratorDigitsThatILike,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,digitsNine } 假设你想使用至少1个didigt,你可以这样做: Digits_t digitIdLikeToUse = digitNone; ... for (DigitsIndexIdLikeToUse_t digitIndexIdLikeToUse = digitsIndexIdLikeToUseZero,digit = digitsIdLikeToUse[digitIndexIdLikeToUse]; digitsIndexIdLikeToUse < digitsIndexIdLikeToUseMax; ++ digitsIndexIdLikeToUse) { <do something with digitIdLikeToUse> } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |