Parámetro con nombre


De Wikipedia, la enciclopedia libre
  (Redirigido desde el argumento de palabra clave )
Saltar a navegación Saltar a búsqueda

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

Visión general

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

Por ejemplo, considere esta llamada al método Java o C # sin 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 ( title = "Title" ,  xPosition = 20 ,  yPosition = 50 ,  width = 100 ,  height = 50 ,  drawingNow = True )

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 ,  drawingNow :  True );

La versión con argumentos posicionales es más implícita. Las versiones con argumentos con nombre son más explícitas. Dependiendo de una instancia dada, un programador puede encontrar uno u otro más fácil de leer.

Usar 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 [ cita requerida ] , Fortran [ cita requerida ] , IDL [ cita requerida ] , Kotlin , [3] Mathematica [ cita requerida ] ,PL / SQL [ cita requerida ] , PowerShell [ cita requerida ] , Python [ cita requerida ] , R [ cita requerida ] , PHP , [4] Ruby [ cita requerida ] , Scala , [5] Smalltalk [ cita requerida ] , Swift [ 6] y Visual Basic . [7] Tenga en cuenta que Objective-Cno tiene parámetros con nombre (aunque partes del nombre del método pueden parecer parámetros con nombre). [8]

Orden de parámetros

En lenguajes sin parámetros con nombre, el orden de los parámetros en una llamada de función es necesariamente fijo, ya que es la única forma en que el lenguaje puede identificar qué valor se pretende usar para qué propósito.

Con parámetros con nombre, generalmente es posible proporcionar los valores en cualquier orden arbitrario, ya que el nombre adjunto a cada valor identifica su propósito. Esto reduce la connascencia entre partes del programa. Algunos lenguajes usan parámetros con nombre, pero aún requieren que los parámetros 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.

Surge una complicación adicional en lenguajes como OCaml que admiten tanto parámetros con nombre opcionales como aplicaciones parciales . En general, es imposible distinguir entre una función parcialmente aplicada y una función a la que se le ha proporcionado un subconjunto de parámetros. OCaml resuelve esta ambigüedad al requerir un parámetro posicional después de todos los 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 y así sucesivamente, serán reemplazadas por la primera, segunda, y así sucesivamente parámetro sin nombre (o el valor de un parámetro con nombre 1, 2, etc.); estos se conocen como parámetros posicionales .

Emulando

En lenguajes sin parámetros con nombre, algunos de los mismos beneficios se pueden lograr de otras formas.

Con documentación

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? * / );

Pero esto no proporciona verificación 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 ,  width :  100 ,  height :  5 ,  drawingNow :  true  });
MyFunctionCall ({  ancho :  100 ,  alto :  5 ,  xPosition :  20 ,  yPosition :  50 ,  drawingNow :  true  });

Comparar con C99: [9]

struct  MyParam  {  int  xPosition ;  int  yPosition ;  int  ancho ;  int  altura ;  unsigned  char  drawingNow ; }; Parámetros de MyParam  = { . xPosition = 20 , . yPosition = 50 , . anchura = 100 , . altura = 5 , . drawingNow = TRUE }; MyFunctionCall                  ( & parámetros );

Soporte especial

En Perl y Ruby anterior a 2.0 existe una convención similar (generalmente llamada hash o hash de opciones [10] ), 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. [11]

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 parámetro con nombre se reemplaza con un método en un objeto de parámetro que modifica y luego devuelve el objeto. En C ++, esto se denomina idioma de parámetro con nombre . [12] El objeto puede luego pasarse a una función que usa los parámetros que contiene.

El encadenamiento de métodos se usa 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

  • Ayuda: Plantilla para parámetros con nombre y posicionales.
  • Interfaz fluida
  • Etiqueta (programación)

Referencias

  1. ^ Manual de referencia para el lenguaje de programación Ada . Departamento de Defensa de los Estados Unidos. 1983.
  2. ^ BillWagner. "Argumentos con nombre y opcionales - Guía de programación de C #" . docs.microsoft.com . Consultado el 16 de junio de 2021 .
  3. ^ "Funciones | Kotlin" . Ayuda de Kotlin . Consultado el 16 de junio de 2021 .
  4. ^ "PHP: Argumentos de función - Manual" . www.php.net . Consultado el 16 de junio de 2021 .
  5. ^ "Argumentos nombrados" . Documentación de Scala . Consultado el 16 de junio de 2021 .
  6. ^ "Funciones - El lenguaje de programación Swift (Swift 5.1)" . docs.swift.org . Consultado el 27 de enero de 2020 .
  7. ^ KathleenDollard. "Pasando argumentos por posición y por nombre - Visual Basic" . docs.microsoft.com . Consultado el 16 de junio de 2021 .
  8. ^ Biblioteca para desarrolladores: la implementación de una clase proporciona su comportamiento interno
  9. ^ https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
  10. ^ Programación de Perl 2.9: Hashes
  11. ^ Módulo principal de Perl Net :: FTP
  12. ^ Preguntas frecuentes de C ++, 10.20 ¿Qué es el " lenguaje de parámetros con nombre"?

enlaces externos

  • https://web.archive.org/web/20070502112455/http://plg.uwaterloo.ca/~rgesteve/cforall/named_pars.html
  • En C ++, este paradigma se puede implementar fácilmente: Boost Parameter Library
  • Parámetros nombrados en varios lenguajes de programación en Rosetta Code
Obtenido de " https://en.wikipedia.org/w/index.php?title=Named_parameter&oldid=1034447255 "