defer en Swift
Limpieza agendada a la entrada, corrida en cada salida.
// defer schedules cleanup for scope exit, whatever the path out.
func scoreRace(entries: Int) -> String {
print("Opening the finish log")
defer { print("Closing the finish log") }
guard entries > 0 else {
return "Abandoned: empty start line"
}
return "Scored \(entries) finishers"
}
print(scoreRace(entries: 14))
print("---")
print(scoreRace(entries: 0))
Cómo funciona
defer { ... }corre cuando el alcance termina, con éxito o sin él.- El retorno temprano del guard igual dispara el cierre diferido.
- Los defer se leen como preparación y desmontaje lado a lado.
Palabras clave y builtins usados aquí
IntStringdeferelsefuncguardprintreturn
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 357
- Tokens
- 71
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 61 segundos.
Paso 3 de 3 en Errores y alcance; paso 24 de 27 en Fundamentos del lenguaje.