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
<T: Comparable>acepta cualquier tipo auto-comparable.- El mismo
fastestclasifica Doubles y Strings. middledevuelveT?— los arreglos vacíos no tienen medio.
Palabras clave y builtins usados aquí
ComparableIntcountfuncisEmptyletprint
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.
Paso 3 de 3 en Abstracciones; paso 21 de 27 en Fundamentos del lenguaje.