Saltar al contenido

¿Cuál es el representante del guión bajo en las referencias de Swift?

Después de investigar en diferentes repositorios y sitios webs de internet al terminar descubrimos la resolución que te mostramos ahora.

Solución:

Ambas respuestas fueron correctas pero quiero aclarar un poco más.

_ se utiliza para modificar el comportamiento de los nombres de parámetros externos para los métodos.

En la sección Nombres de parámetros locales y externos para métodos de la documentación, dice:

Swift da el nombre del primer parámetro en un método un nombre de parámetro local por defecto, y proporciona el segundo nombre de parámetro y los subsiguientes nombres de parámetros tanto locales como externos por defecto.

Por otro lado, las funciones por defecto no tienen nombres de parámetros externos.

Por ejemplo, tenemos este foo() método definido en clase Bar:

class Bar
    func foo(s1: String, s2: String) -> String 
        return s1 + s2;
    

Cuando usted llama foo()se llama como bar.foo("Hello", s2: "World").

Peropuede anular este comportamiento utilizando _ en frente de s2 donde se declara.

func foo(s1: String, _ s2: String) -> String
    return s1 + s2;

Entonces, cuando llames foopodría llamarse simplemente como bar.foo("Hello", "World") sin el nombre del segundo parámetro.

Volviendo a tu caso, runAction es un método porque está asociado con el tipo SKNode, obviamente. Así, poniendo un _ antes del parámetro action te permite llamar runAction sin un nombre externo.

Actualización para Swift 2.0

La función y el método ahora funcionan. de la misma manera en términos de declaración de nombre de argumento local y externo.

Las funciones ahora se llaman mediante el uso de un nombre de parámetro externo de forma predeterminada, comenzando en el segundo parámetro. Esta regla solo se aplica al código Swift puro.

Entonces, al proporcionar un _ Delante de un funciónla persona que llama no tendrá que especificar el nombre del parámetro externo, al igual que lo haría para un método.

El guión bajo es un token general que se utiliza para indicar un valor descartado.

En este caso específico, significa que la función será invocada como runAction(argument) en vez de runAction(action:argument)

En otros contextos tiene otro significado similar, por ejemplo en:

for _ in 0..<5  ... 

Significa que simplemente queremos ejecutar el bloque 5 veces y no nos importa el índice dentro del bloque.

En este contexto:

let (result, _) = someFunctionThatReturnsATuple()

Significa que no nos importa cuál es el segundo elemento de la tupla, solo el primero.

Desde Swift 3 todas las etiquetas de argumento son requeridas por defecto.

Puede obligar a un IDE a ocultar una etiqueta de argumento con _.

func foo(a: String) 


func foo2(_ a: String) 

llamó foo(a: "abc") y foo2("abc")

Nota: Esto se puede utilizar sólo cuando a es el etiqueta de argumento (externa) y nombre de la variable (interna) al mismo tiempo. es equivalente - func foo(a a: String) no aceptará el _.

¿Por qué Apple lo está usando?

Puede ver que Apple lo está usando en toda la API. Las bibliotecas de Apple todavía están escritas en Objective-C (si no, comparten los mismos nombres de función de todos modos, que fueron diseñados para la sintaxis de Objective-C)

Funciones como applicationWillResignActive(_ application: UIApplication) tendría redundante nombre del parámetro applicationya que existe el solicitud en su nombre de función.

tu ejemplo

func runAction(_ action: SKAction!) sería llamado sin que es _ marcar como runAction(action:). El nombre del parámetro action sería redundante ya que ya hay uno en el nombre de la función. Ese es el propósito y por qué está ahí.

Aquí puedes ver las reseñas y valoraciones de los usuarios

Si te gustó nuestro trabajo, tienes el poder dejar un enunciado acerca de qué le añadirías a esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *