tag obtener get_the_tags get_the codex actual function callback functional-programming swift

function - obtener - Pasar devolución de llamada opcional a la función Swift



tags wordpress codex (3)

Es mejor agregar = nil en la declaración de devolución de llamada, para evitar pasar nil al llamarlo:

func dismiss(completion: (() -> Void)? = nil) { if (completion) { return self.dismissViewControllerAnimated(true, completion: completion) } self.dismissModalViewControllerAnimated(true) }

Y puede llamar a su función de esta manera: dismiss()

Estoy aprendiendo Swift Lang, pero no puedo pasar el argumento de devolución de llamada opcional a la función:

func dismiss(completion: () -> Void) { if (completion) { return self.dismissViewControllerAnimated(true, completion: completion) } self.dismissModalViewControllerAnimated(true) }

Esto me muestra un error: Type () -> Void does not conform to protocol ''LogicValue''

¿Alguna sugerencia?


Simplemente agregando la respuesta de Martin R arriba ..

La devolución de llamada puede ser opcional, en lugar de un parámetro implícito (con signo de exclamación), use el operador opcional.

func dismiss(completion: (() -> Void)?) { if completion != nil { return self.dismissViewControllerAnimated(true, completion: completion!) } self.dismissModalViewControllerAnimated(true) }


Actualización para Swift 3/4:

Una opción ya no es una expresión booleana, y el func dismissModalViewControllerAnimated(animated: Bool) ya no está disponible en Swift.

Simplemente declare el parámetro de finalización como un cierre opcional y páselo a

func dismiss(animated flag: Bool, completion: (() -> Void)? = nil)

que también tiene un cierre opcional:

func dismiss(completion: (() -> Void)? = nil) { self.dismiss(animated: true, completion: completion) }

Old (Swift 1.x?) Respuesta:

Declare el parámetro de completion como ( opcionalmente desenvuelto) cierre opcional (() -> Void)! :

func dismiss(completion: (() -> Void)!) { if (completion) { return self.dismissViewControllerAnimated(true, completion: completion) } self.dismissModalViewControllerAnimated(true) }

Pero ten en cuenta que puedes llamar

self.dismissViewControllerAnimated(true, completion: completion)

en cualquier caso, porque el parámetro de completion de esa función también es opcional. Y

func dismissModalViewControllerAnimated(animated: Bool)

en realidad está marcado como obsoleto.