typestar

Ordenar con comparadores en Objective-C

Un block devuelve ascendente, igual o descendente; el arreglo obedece.

#import <Foundation/Foundation.h>

int main(void) {
    @autoreleasepool {
        NSArray<NSNumber *> *years = @[ @1971, @1959, @1977, @1965 ];

        // A comparator block returns ascending, same, or descending.
        NSArray<NSNumber *> *sorted =
            [years sortedArrayUsingComparator:
                ^NSComparisonResult(NSNumber *a, NSNumber *b) {
                    return [a compare:b];
                }];
        NSLog(@"Oldest press: %@", [sorted firstObject]);
        NSLog(@"In order: %@", [sorted componentsJoinedByString:@", "]);
    }
    return 0;
}

Cómo funciona

  1. sortedArrayUsingComparator: devuelve un arreglo nuevo ordenado.
  2. [a compare:b] ya habla NSComparisonResult.
  3. El arreglo original queda intacto — inmutable entra, inmutable sale.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
463
Tokens
99
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 99 segundos.

Escribe este fragmento

Paso 3 de 3 en Enumeración; paso 15 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →