Ciencia días Swift (día 6) - Cierre: Parte 1

Ciencia Días Swift (día 6.) - Primera parte cierres (cierre: Parte 1)

1. La creación de cierres de base (la base para la creación de cierres) - Test

Puede ser utilizado como otros tipos (como cadenas y enteros) que se utilizan en las funciones Swift. Esto significa que puede crear una función y asignarla a una variable, utilice la variable llamada esta función, incluso pasar a la función como un parámetro a otra función.

Función que se utiliza de esta manera se llama el cierre , a pesar de que funcionan como una función, pero se escriben de manera diferente.

Empecemos con un ejemplo sencillo que muestra un mensaje:

let driving = {
    print("我在开车")
}

Esto creará efectivamente una función sin un nombre y asignar la función a driving. Ahora puede driving()hacer llamadas como una llamada a la función normal de la siguiente manera:

driving()

2. La aceptación de parámetros en un cierre (cierre de los parámetros de aceptación) - Prueba

Al crear cierres, no tienen nombre o un espacio para escribir cualquier parámetro. Esto no quiere decir que no puede aceptar el argumento, pero de una manera diferente que acepta parámetros: son en los apoyos en la lista.

Para el cierre toma parámetros, que se enumeran en el paréntesis entre paréntesis después de la apertura, y después se añaden ina conocer Swift cuerpo de cierre está comenzando.

Por ejemplo, podemos crear una cadena de nombre de lugar aceptable como su cierre parámetro sólo, de la siguiente manera:

let driving = { (place: String) in
    print("我要开车去\(place)")
}

Una de las diferencias entre la función y los cierres no se utilizan cuando el cierre parámetro de etiqueta de ejecución.

driving("杭州")

3. Devolución de valores de un cierre (el valor de retorno de cierre) - Prueba

Los cierres también pueden valores, su redacción y parámetros similares regresar: Se puede escribir en un cierre, justo inantes de la palabra clave.

Para ilustrar este punto, vamos a utilizar los driving()cierres y devolver su valor, en lugar de imprimir directamente. Este es el original:

let driving = { (place: String) in
    print("我要开车去\(place)")
}

Esperamos que los rendimientos de cierre de una cadena en lugar de imprimir los mensajes directamente, por lo que tenemos que utilizar -> Stringel antes in, y luego returncomo un uso normal de la función:

let drivingWithReturn = { (place: String) -> String in
    return "我要开车去\(place)"
}

Ahora, podemos ejecutar los cierres e imprimir el valor de retorno:

let message = drivingWithReturn("杭州")
print(message)

4. Los cierres como parámetros (cierre como un parámetro) - prueba

Debido a que el cierre se puede utilizar la imagen como enteros y cadenas, para que puedan ser pasados ​​a la función.

En primer lugar, se trata de nuestros cierres básicosdriving()

let driving = {
    print("I'm driving in my car")
}

Si queremos pasar el cierre de la función, de modo que pueda funcionar dentro de la función, puede especificar el tipo de parámetro () -> Void. Esto significa que "no acepta ningún parámetro, y luego regresar Void."

Por lo tanto, podemos escribir un travel()comportamiento de viaje aceptable de diversas funciones, e imprime un mensaje y luego antes:

func travel(action: () -> Void) {
    print("I'm getting ready to go.")
    action()
    print("I arrived!")
}

Ahora, podemos utilizar drivinglos cierres de llamarlo, de la siguiente manera:

travel(action: driving)

5. sintaxis de cierre posterior (detrás de la gramática de cierre) - Prueba

Si el último parámetro es una función de cierre, Swift se puede denominar con el cierre de arrastre especial sintaxis . Más bien de cierre pasa como un parámetro, entre paréntesis después de la función es mejor para pasar directamente.

Para probar el punto, esta es nuestra travel()función. Se acepta actionun cierre, de manera que los dos se pueden print()ejecutar entre la llamada:

func travel(action: () -> Void) {
    print("准备出发")
    action()
    print("已到达目的地,本次导航结束")
}

Debido a que es el último argumento es un cierre, por lo que podemos travel()seguir utilizando la sintaxis de salida de cierre a la llamada , de la siguiente manera:

travel() {
    print("高德导航持续为您服务")
}

De hecho, la ausencia de cualquier otro parámetro, se puede eliminar por completo paréntesis:

travel {
    print("高德导航持续为您服务")
}

Se arrastra en la sintaxis de cierre de Swift es muy común.

Publicado 53 artículos originales · elogios ganado 15 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/hh680821/article/details/105172554
Recomendado
Clasificación