Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

402
Views
¿Cuál es el significado de : en las firmas de funciones Swift y por qué no hay una coma cuando parece que debería haber una?

Aquí hay un ejemplo de lo que estoy hablando: https://developer.apple.com/documentation/foundation/nsmutableorderedset/1410287-insert

La función de inserción se muestra como insert(_:at:)

Cuando se usa realmente, la función de inserción se parece más a:

namesArray.insert("John", at: 3)

No hay : después de "John" (aunque supongo que podría ser "John":String -- ¿para eso está ahí?), y el , que en realidad necesita ir allí, no se menciona en la firma de la función en la documentación. ¿Se supone que debo saber/asumir que la coma va allí cuando realmente la uso? ¿Es este el caso para todas las funciones de Swift?

Tenga en cuenta que esta no es una pregunta sobre el guión bajo, _ -- Entiendo por qué está ahí y para qué sirve. Estoy preguntando específicamente sobre las razones para incluir : y no incluir , en la firma de la función.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

La convención, que se ve con frecuencia en la documentación, es una forma concisa de referirse a una función, utilizando solo el nombre de la función y las etiquetas de los argumentos.

Así que considere esta declaración de función:

 func insert(_ objects: [Any], at indexes: IndexSet)

Este es

  • un método llamado insert ;
  • el nombre del primer parámetro se llama objects , este parámetro no tiene etiqueta de argumento (designado con _ ) y tiene un tipo de [Any] ; y
  • el segundo nombre del parámetro es indexes , su etiqueta de argumento está at y tiene un tipo de IndexSet .

Entonces lo llamas así:

 insert(someObjects, at: someIndex)

Cuando lo llama, no le importa cuáles son los nombres de los parámetros que se usan dentro de esa función, sino cuáles son las etiquetas de los argumentos. Por lo tanto, la convención al referirse a ese método en la documentación es omitir los nombres y tipos de parámetros y simplemente usar el nombre de la función y las etiquetas de los argumentos, pero sin coma:

 insert(_:at:)

Tenga en cuenta que nunca usaría esta sintaxis en su código. Esta es solo una convención de documentación empleada para destilar declaraciones de funciones largas en algo más manejable y conciso:

transición

Para obtener más información sobre etiquetas de argumentos y nombres de parámetros, consulte Etiquetas de argumentos de funciones y nombres de parámetros

over 4 years ago · Santiago Trujillo Report

0

R : en la función, la firma siempre significa un argumento de entrada para la función. La firma de la función contiene la etiqueta del argumento seguida de : . El _ significa que no hay una etiqueta de argumento, en cuyo caso también puede omitir el : al proporcionar ese argumento de entrada específico a la llamada de función.

Esto es exactamente lo que ve con la función insert(_:at:) . Le proporciona dos argumentos de entrada, "John" y 3 , pero solo necesita una etiqueta de argumento para el segundo argumento de entrada, por lo tanto, solo necesita uno : . También es importante tener en cuenta que, en el momento de la llamada, separa los argumentos de entrada usando , , no : .

over 4 years ago · Santiago Trujillo Report

0

Las funciones Swift tienen una forma única de especificar la firma, que es un patrón de transferencia de Objective C. Hay 3 partes para especificar cada argumento de entrada a la firma de la función. La firma para la función que mencionaste es la siguiente:

 func insert(_ objects: [Any], at indexes: IndexSet)

Veamos primero el segundo argumento:

  1. at indica la etiqueta del argumento , que es cómo la persona que llama especifica el parámetro.
  2. indexes indica el nombre del parámetro de la función al objeto. Esto significa que en el cuerpo de la función, todo lo que se haya pasado como at: se denominará indexes .
  3. IndexSet es el tipo del argumento.

La parte 1 también puede ser algo además de un nombre:

  • si no se especifica, el nombre del argumento y la etiqueta del parámetro son los mismos. Por ejemplo, si la firma fuera func insert(objects: [Any], indexes: IndexSet) , la función se llamaría como o.insert(objects: ['a','b'], at: [1,2]) .
  • Si es un guión bajo ( _ ), entonces el argumento no tiene etiqueta para la persona que llama. Esto permite que la persona que llama use la llamada más simple e intuitiva o.insert(['a','b'], at: [1,2]) .
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!