typestar

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

  1. NS_ENUM(NSInteger, VinylGrade) ata el enum a su ancho.
  2. Los casos siguen la convención PrefijoDeClaseCaso.
  3. Un switch sobre cada caso no necesita default para pasar -Wall.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Interop con C; paso 24 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →