NS_ENUM en Objective-C
Enums con tipo subyacente fijo, con switch exhaustivo.
#import <Foundation/Foundation.h>
// NS_ENUM ties an enum to a fixed underlying type.
typedef NS_ENUM(NSInteger, VinylGrade) {
VinylGradeMint,
VinylGradeNearMint,
VinylGradeVeryGood,
VinylGradeGood,
};
static NSString *gradeLabel(VinylGrade grade) {
switch (grade) {
case VinylGradeMint: return @"M";
case VinylGradeNearMint: return @"NM";
case VinylGradeVeryGood: return @"VG";
case VinylGradeGood: return @"G";
}
return @"?";
}
int main(void) {
@autoreleasepool {
NSLog(@"Grades: %@ then %@", gradeLabel(VinylGradeNearMint),
gradeLabel(VinylGradeGood));
}
return 0;
}
Cómo funciona
NS_ENUM(NSInteger, VinylGrade)ata el enum a su ancho.- Los casos siguen la convención PrefijoDeClaseCaso.
- Un switch sobre cada caso no necesita default para pasar -Wall.
Palabras clave y builtins usados aquí
NSStringcaseintreturnstaticswitchtypedefvoid
El intento, en números
- Líneas
- 27
- Caracteres a escribir
- 580
- Tokens
- 106
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 98 segundos.
Paso 3 de 3 en Interop con C; paso 24 de 27 en Fundamentos del lenguaje.