stringtranslate.com

parámetro con nombre

En programación de computadoras , parámetros con nombre , argumentos de parámetro con nombre , argumentos con nombre o argumentos de palabras clave se refieren al soporte de un lenguaje de computadora para llamadas a funciones para asociar claramente cada argumento con un parámetro determinado dentro de la llamada a función.

Descripción general

Una llamada a función que utiliza parámetros con nombre se diferencia de una llamada a función normal en que los argumentos se pasan asociando cada uno con un nombre de parámetro, en lugar de proporcionar una lista ordenada de argumentos.

Por ejemplo, considere esta llamada a un método Java o C# que no utiliza parámetros con nombre:

ventana . addNewControl ( "Título" , 20 , 50 , 100 , 50 , verdadero );     

Usando parámetros con nombre en Python , la llamada se puede escribir como:

ventana . addNewControl ( título = "Título" ,  xPosition = 20 ,  yPosition = 50 ,  ancho = 100 ,  alto = 50 ,  dibujoAhora = Verdadero )

Usando parámetros con nombre en PHP , la llamada se puede escribir como:

$ ventana -> addNewControl ( título :  "Título" ,  xPosition :  20 ,  yPosition :  50 ,  ancho :  100 ,  alto :  50 ,  dibujoAhora :  Verdadero );

La versión con argumentos posicionales es más implícita. Las versiones que nombran parámetros son más explícitas. Dependiendo de las circunstancias, un programador puede encontrar que uno u otro es más fácil de leer.

Uso en lenguajes de programación.

Los parámetros con nombre se admiten explícitamente en muchos idiomas. Una selección no exhaustiva de ejemplos incluye Ada , [1] C# 4.0+ , [2] Ceylon [ cita requerida ] , ColdFusion Markup Language (CFML) [ cita requerida ] , Common Lisp , [3] Fortran [ cita requerida ] , IDL [ cita requerida ] , Kotlin , [4] Mathematica [ cita requerida ] , PL/SQL [ cita requerida ] , PowerShell [ cita requerida ] , Python , [5] R , [6] PHP , [7] Ruby , [8] Scala , [9] Smalltalk [ cita necesaria ] , Swift [10] y Visual Basic . [11] Objective-C no tiene parámetros con nombre (aunque partes del nombre del método pueden parecer parámetros con nombre). [12]
En C++ , puede lograr parámetros con nombre utilizando inicializadores designados desde C++20 , [13] así:

estructura A { int a {}, int b {} };       void foo ( Una barra ) { std :: cout << barra . una << barra . b ; } foo ({ . a = 1 , . b = 3 });             

Orden de parámetros

En los lenguajes que no admiten parámetros con nombre, el orden de los argumentos en una llamada a función es necesariamente fijo, ya que es la única forma en que el lenguaje puede identificar qué argumento se utilizará para qué parámetro.

Con parámetros con nombre, normalmente es posible proporcionar los argumentos en cualquier orden, ya que el nombre del parámetro adjunto a cada argumento identifica su propósito. Esto reduce la connascencia entre partes del programa. Algunos idiomas admiten parámetros con nombre, pero aún requieren que los argumentos se proporcionen en un orden específico.

Parámetros opcionales y parámetros posicionales.

Los parámetros con nombre se utilizan a menudo junto con parámetros opcionales. Sin parámetros con nombre, los parámetros opcionales solo pueden aparecer al final de la lista de parámetros, ya que no hay otra forma de determinar qué valores se han omitido. Sin embargo, en los lenguajes que admiten parámetros opcionales con nombre, los programas pueden proporcionar cualquier subconjunto de los parámetros disponibles y los nombres se utilizan para determinar qué valores se han proporcionado.

Una complicación adicional surge en lenguajes como OCaml que soportan tanto parámetros con nombre opcionales como aplicaciones parciales . En general, es imposible distinguir entre una función aplicada parcialmente y una función a la que se le ha proporcionado un subconjunto de parámetros. OCaml resuelve esta ambigüedad al requerir un argumento posicional después de todos los argumentos de parámetros con nombre opcionales: su presencia o ausencia se usa para decidir si la función se ha aplicado total o parcialmente. Si todos los parámetros son opcionales, el implementador puede resolver el problema agregando un parámetro posicional ficticio de tipo unidad .

En MediaWiki , los códigos (variables) {{{1}}}, {{{2}}}en las plantillas, etc., serán reemplazados por el primer, segundo, etc. parámetro sin nombre (o el valor de un parámetro llamado 1,, 2etc.); estos se conocen como parámetros posicionales .

Emulando

En lenguajes que no admiten parámetros con nombre, algunos de los mismos beneficios se pueden lograr de otras maneras.

Con documentacion

Su valor como documentación se puede replicar mediante información sobre herramientas en entornos de desarrollo integrados (IDE) para lenguajes como Java , o con comentarios (en C ):

MyFunctionCall ( 20 , /* coordenada x */ 50 , /* coordenada y */ 100 , /* ancho */ 5 , /* alto */ TRUE /* ¿dibujando ahora? */ );          

No se comprueba la exactitud de dichos comentarios y el orden de los argumentos sigue siendo importante.

Con estructuras de datos

Se puede eliminar la restricción del orden de los argumentos y la capacidad de dejar algunos valores sin especificar pasando un registro o una matriz asociativa .

Por ejemplo, en JavaScript , estas dos llamadas son equivalentes:

MyFunctionCall ({ xPosition : 20 , yPosition : 50 , ancho : 100 , alto : 5 , dibujoAhora : verdadero });           
MyFunctionCall ({ ancho : 100 , alto : 5 , posición x : 20 , posición y : 50 , dibujoAhora : verdadero });           

Comparar con C99: [14]

struct MyParam { int xPosition ; int yPosición ; ancho interno ; altura interna ; dibujo de carbón sin firmarAhora ; }; Parámetros MyParam = { . xPosición = 20 , . Posición y = 50 , . ancho = 100 , . altura = 5 , . dibujandoAhora = VERDADERO }; MyFunctionCall ( y parámetros );                                

Soporte especial

En Perl y Ruby anterior a 2.0 existe una convención similar (generalmente llamada hash o hash de opciones [15] ), con soporte especial para omitir los delimitadores dentro de las llamadas a funciones. Como ejemplo, la nueva función Net::FTP del módulo principal acepta un hash de argumentos opcionales. [dieciséis]

Con llamadas a métodos encadenados

En los lenguajes de programación orientados a objetos , es posible utilizar el encadenamiento de métodos para simular parámetros con nombre, como una forma de interfaz fluida . Cada argumento de parámetro con nombre se reemplaza con un método en un objeto de "argumentos" que modifica y luego devuelve el objeto. En C++, esto se denomina modismo de parámetro con nombre . [17] El objeto puede luego pasarse a una función que utilice los argumentos que contiene.

El encadenamiento de métodos se utiliza a menudo junto con el patrón del constructor como una forma de anular los valores predeterminados proporcionados por la clase del constructor.

Ver también

Referencias

  1. ^ Manual de referencia del lenguaje de programación Ada . Departamento de Defensa de los Estados Unidos. 1983.
  2. ^ Bill Wagner. "Argumentos opcionales y con nombre: Guía de programación de C#". Microsoft aprende . Consultado el 16 de junio de 2021 .
  3. ^ "Funciones". El libro de cocina Common Lisp . Consultado el 28 de octubre de 2021 .
  4. ^ "Funciones | Kotlin". Ayuda de Kotlin . Consultado el 16 de junio de 2021 .[ enlace muerto ]
  5. ^ "8. Declaraciones compuestas - 8.7. Definiciones de funciones". Documentación de Python . Consultado el 28 de octubre de 2021 .
  6. ^ "10.3 Argumentos con nombre y valores predeterminados". Una introducción a R. La red integral de archivos de R. Consultado el 28 de octubre de 2021 .
  7. ^ "PHP: Argumentos de función - Manual - Argumentos con nombre". PHP . Consultado el 16 de junio de 2021 .
  8. ^ Anderson, Ian C. (21 de julio de 2014). "Argumentos de palabras clave de Ruby 2". robot de pensamiento . Consultado el 28 de octubre de 2021 .
  9. ^ "Argumentos con nombre". Documentación de Scala . Consultado el 16 de junio de 2021 .
  10. ^ "Funciones". El lenguaje de programación Swift (Swift 5.1) . Consultado el 27 de enero de 2020 .
  11. ^ KathleenDollard. "Pasar argumentos por puesto y por nombre - Visual Basic". Microsoft aprende . Consultado el 16 de junio de 2021 .
  12. ^ Biblioteca para desarrolladores: la implementación de una clase proporciona su comportamiento interno
  13. ^ "Redacción de inicialización designada" (PDF) .
  14. ^ "Inits designados (utilizando la colección de compiladores GNU (GCC))".
  15. ^ Programación Perl 2.9: hashes
  16. ^ Módulo principal de Perl Net::FTP
  17. ^ Preguntas frecuentes sobre C++, 10.20 ¿Qué es el "idioma de parámetro con nombre"?

enlaces externos