¿Qué significa un guión bajo en Swift?

En Swift 3 a veces el subrayado está ahí y otras no.

Entonces, ¿qué hace exactamente?

Bueno, regresemos un poco y hablemos primero de las funciones. Cualquier función que tenga algunos parámetros pasados DEBE tener esos nombres de parámetros especificados cuando se llama a la función.

Caso de ejemplo 1:

func storeName (nombre: String) {
self.firstName = nombre
}
// entonces llamarías a esta función en otro lugar así:
storeName (nombre: “Grant”)

Ahora a veces el guión bajo de Swift 3 aparece así:

func storeName (_ name: String) {
self.firstName = nombre
}
// entonces llamarías a esta función en otro lugar así:
storeName (“Grant”)

¿Puedes ver la diferencia?

En el primero tenía que especificar “nombre:” pero en el segundo no tenía que hacerlo, al igual que en los viejos tiempos de programación (o como C #).

Ejemplo de caso 2:

A veces tienes una variable que declaraste pero que en realidad no usaste. El subrayado _ es una forma de diseñar esa variable y ahorrar un poquito de memoria (para usuarios de iPhone 4s, claramente).

// código original
let name = “Grant” // Xcode se queja como un loco aquí
// ¿Qué quiere Xcode que hagas?
_ = “Grant”

Y esos son los 2 casos básicos del guión bajo. ¿Has visto otros? Tal vez deberías comentar a continuación y házmelo saber.

Utiliza un guión bajo en dos escenarios:

  • Una expresión devuelve un valor, pero no desea asignarlo a una variable. En cambio, lo asigna a un guión bajo. Un ejemplo:

    para _ en 1 … 5 {
    imprimir (“hola”)
    }

    si let _ = optionalValue {}

    _ = object.functionThatReturnsAValue ()

  • Un parámetro de función sin nombre. En Swift> 2.2, se nombran todos los parámetros de la función. En Objective-C, el primer parámetro de la función no tiene nombre. Para mediar esto, puede reemplazar el nombre del parámetro de una función con un guión bajo. Cuando llama a esta función, no tiene que usar el nombre del parámetro (por lo tanto, “parámetro sin nombre”).

    func exampleFunction (_ a: String, b: String)
    {
    imprimir (“hacer magia”)
    }

    exampleFunction (“aaa”, b: “bbb”)

¡Eso es!

Las respuestas aquí cubren dos de los principales casos de uso del guión bajo. Otro es para la coincidencia de patrones. Considere lo siguiente (del lenguaje de programación Swift):

deje somePoint = (1, 1)
cambiar somePoint {
caso (0, 0):
print (“\ (somePoint) está en el origen”)
caso (_, 0):
print (“\ (somePoint) está en el eje x”)
caso (0, _):
print (“\ (somePoint) está en el eje y”)
caso (-2 … 2, -2 … 2):
print (“\ (somePoint) está dentro del cuadro”)
defecto:
print (“\ (somePoint) está fuera del cuadro”)
}
// Imprime “(1, 1) está dentro de la caja”

Donde hay un _, coincide con cualquier valor.

para _ en imágenes {
print (“print Swift”)
}

Significa que no me importa el valor de las imágenes. No necesito asignarlo a nada. Sin embargo, solo quiero recorrer las imágenes y, por cada imagen, quiero hacer algo.


En ocasiones, también verá que el compilador le sugiere cambiar el nombre de una variable a _ . Solo sugiere esto si ha dado un valor a la variable, pero nunca se ha referido a ese valor.

Por ejemplo tienes

let x = 5

sin embargo, en las próximas líneas nunca usará x por lo que el compilador le sugerirá que cambie su nombre a _ ya que nunca lo usó … como si no le importara.
El compilador le está dando una advertencia porque quiere reducir la memoria abandonada.


Por último, si bien no menos importante:

Usando el código de la documentación de Apple Algunas veces verías algo

si deja starPath = imagePaths [“star”] {
print (“La imagen de la estrella está en ‘\ (starPath)'”)
}

Sin embargo, si pudieras hacer algo como esto:

if _ = imagePaths [“star”] {
print (“La imagen de la estrella está en una ubicación que no me importa, solo quiero hacer algo si el valor opcional tiene un valor,
No me importa su valor real, y tampoco voy a hacer referencia a él) ‘”)
}

Hola,

_ significa sintetizar

En la versión anterior de Xcode, sintetizar la palabra clave utilizada, que ahora estamos usando “_”.

“@Synthesize name” o “_name” o “self.name”

[Todos son iguales].

En subrayado rápido simplemente significa: no te preocupes por sus nombres. ¡Período!

More Interesting

¿Por qué es tan costosa hacer una aplicación de iOS?

Estoy lanzando el MVP 1 de una aplicación en unas pocas semanas, y la sugerencia ha sido presentada de que lancemos en Test Flight de Apple para su aplicación iOS. Estoy preocupado por algunas razones. ¿Alguien ha tenido alguna experiencia reciente con él? ¿Alguna idea?

¿Qué nuevas características de iOS 8 hacen que no esté disponible para el iPhone 4? ¿Por qué iOS 7 hace que el iPhone 4 sea lento?

Como desarrollador de iOS, ¿sería útil aprender la unidad?

¿Por qué los titulares de derechos de autor que poseen los derechos de autor de algunos juegos antiguos geniales aún no los han transferido a la plataforma iOS?

Cómo ser bueno para hacer aplicaciones iOS

¿Cómo implementa HotelTonight el efecto de desenfoque dinámico en tiempo real en su aplicación iOS 7?

¿Cuál es la información más confidencial recopilada en los registros enviados a Apple como probador beta de iOS 10?

¿Por qué los anuncios gráficos interactivos no se mueven de Flash a HTML5?

¿Cuál es el alojamiento más económico para alojar su aplicación de iPhone después del desarrollo?

¿Es una mala idea tener diferentes archivos .xib para cada dispositivo?

¿Cuál es la mejor manera de instalar una aplicación casera de iPhone en un iPod touch con cárcel?

¿Por qué Apple no incluye temas personalizados u oficiales simples y bien integrados en iOS?

¿Vale la pena aprender Swift con la intención de ganar dinero como desarrollador de iOS?

¿Quiénes son los principales desarrolladores de aplicaciones iOS en India?