¿Cuáles son las nuevas palabras clave “para”, “en”, “en” en las declaraciones de funciones de Swift3?

Estoy trabajando en un tutorial para principiantes en Swift que está escrito en Swift 2.

Contiene código como (ejemplo aleatorio)

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 

Esto ha cambiado en Swift 3 (estoy usando XCode 8 Beta), y el IDE lo convierte a la nueva notación (¡preciosa!).

 override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) { 

Lo que me confunde aquí es el “para” en “para segue:”. Entiendo por qué está ahí, pero ¿qué tipo de elemento es sintácticamente? Es el parámetro nombrado for , for segue o segue ?

¿Es una mera decoración, un elemento sin significado, sino ayudar al desarrollador a comprender el contexto? ¿Hace algo más? ¿El concepto tiene un nombre? ¿Puedo usarlo en mis propios métodos?

Veo que ocurre lo mismo con “en” y “en”.

La syntax le permite etiquetar argumentos dos veces: una para usar dentro de la función (el nombre del parámetro ) y otra para usar al llamar (la etiqueta del argumento ). Por defecto, estos dos serán los mismos (como con el sender en su ejemplo), pero difieren cuando hace que una función sea más legible en el sitio de la llamada:

 prepare(for: aSegue, sender: something) 

siendo más legible-como-una oración que:

 prepare(segue: aSegue, sender: something) 

Lo cual parece que estás preparando la transición, no preparándote para la transición.

for sería un nombre terrible para usar internamente en la función para hacer referencia a la transición, por lo que puede utilizar uno diferente si lo requiere.

La idea es cumplir con los objectives a veces conflictivos de legibilidad en el sitio de llamadas y nombres razonables en la implementación.

Al definir una función, si va a usar tags de argumento y nombres de parámetros por separado, especifique primero la etiqueta del argumento y el segundo nombre del parámetro:

 func sayHello(to name: String) { print("Hello " + name) } sayHello(to: "Pekka") 

solo tiene relevancia cuando se llama a la función. name se usa dentro de la función.