我正在尝试使用枚举,因此我创建了一个简单的成绩计算器:
enum grades {
A,
B,
C,
D,
F
};
enum grades gradeSimplifier(int numericGrade){
if (numericGrade>100) {
NSLog(@"Error");
return 0;
}
if(numericGrade>=90 && numericGrade<=100){
return enum grades.A;
}
if(numericGrade>=80 && numericGrade <90){
enum grades = B
return grades grades.B;
}
if(numericGrade >= 70 && numericGrade < 80) {
enum grades = C
return grades grades.C;
}
if (numericGrade>=60 && numericGrade <70) {
return grades grades.D;
}
else {
return grades grades.F;
}
}
基本上我希望代码取整数值并将其转换为字母等级。我正在努力解决如何使if语句返回枚举值的语法。
另外,我知道我可以使用开关,因此无需对此进行评论。
谢谢!
答案 0 :(得分:3)
这里有几个问题。首先,在Objective-C中声明enum
的现代方式是NS_ENUM
。所以你应该像这样声明你的枚举:
typedef NS_ENUM(NSInteger, Grade) {
A, B, C, D, F
}
其次,您可能需要考虑重命名枚举值。它们基本上成为全局常量,而Objective-C中没有命名空间。因此,通常人们使用枚举的名称为其枚举值添加前缀。 (此外,人们使用三个字母的前缀代替命名空间,但这是一个单独的问题。)我认为这样的事情会更好:
typedef NS_ENUM(NSInteger, Grade) {
GradeA, GradeB, GradeC, GradeD, GradeF
};
然后,您可以使用新声明的枚举类型声明您的函数:
Grade getLetterGradeFromNumeric(int numericGrade) {
if (numericGrade >= 90) return GradeA;
else if (numericGrade >= 80) return GradeB;
else if (numericGrade >= 70) return GradeC;
// ... etc.
}
答案 1 :(得分:2)
这就是你想要的吗?
typedef enum : NSUInteger {
GradeError = 0,
GradeA,
GradeB,
GradeC,
GradeD,
GradeF
} Grade;
-(Grade)TheGrade:(int)numericGrade
{
if (numericGrade>100) {
NSLog(@"Error");
return GradeError;
}
if(numericGrade>=90 && numericGrade<=100){
return GradeA;
}
//....
}