typestar

Genéricos en Swift

Parámetros de tipo en la llamada, acotados donde hace falta.

// T is chosen at the call site; the constraint keeps it comparable.
func fastest<T: Comparable>(_ a: T, _ b: T) -> T {
    a < b ? a : b
}

func middle<T>(_ items: [T]) -> T? {
    items.isEmpty ? nil : items[items.count / 2]
}

print(fastest(3612.0, 3599.5))
print(fastest("Kestrel", "Brant"))

let order = ["pin", "windward", "leeward", "finish"]
print("Halfway mark: \(middle(order) ?? "none")")
print("Empty course: \(middle([Int]()) ?? -1)")

Cómo funciona

  1. <T: Comparable> acepta cualquier tipo auto-comparable.
  2. El mismo fastest clasifica Doubles y Strings.
  3. middle devuelve T? — los arreglos vacíos no tienen medio.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
439
Tokens
142
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 131 segundos.

Escribe este fragmento

Paso 3 de 3 en Abstracciones; paso 21 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →