fbpx
Wikipedia

Named parameter

In computer programming, named parameters, named-parameter arguments, named arguments or keyword arguments refer to a computer language's support for function calls to clearly associate each argument with a given parameter parameter within the function call.

Overview

A function call using named parameters differs from a regular function call in that the arguments are passed by associating each one with a parameter name, instead of providing an ordered list of arguments.

For example, consider this Java or C# method call that doesn't use named parameters:

window.addNewControl("Title", 20, 50, 100, 50, true); 

Using named parameters in Python, the call can be written as:

window.addNewControl(title="Title", xPosition=20, yPosition=50, width=100, height=50, drawingNow=True) 

Using named parameters in PHP, the call can be written as:

$window->addNewControl(title: "Title", xPosition: 20, yPosition: 50, width: 100, height: 50, drawingNow: True); 

The version with positional arguments is more implicit. The versions that name parameters are more explicit. Depending on circumstance, a programmer may find one or the other to be easier to read.

Use in programming languages

Named parameters are supported explicitly in many languages. A non-exhaustive selection of examples includes Ada,[1] C# 4.0+,[2] Ceylon[citation needed], ColdFusion Markup Language (CFML)[citation needed], Common Lisp,[3] Fortran[citation needed], IDL[citation needed], Kotlin,[4] Mathematica[citation needed], PL/SQL[citation needed], PowerShell[citation needed], Python,[5] R,[6] PHP,[7] Ruby,[8] Scala,[9] Smalltalk[citation needed], Swift[10] and Visual Basic.[11] Note that Objective-C does not have named parameters (even though parts of the method name may look like named parameters).[12]

Order of parameters

In languages that do not support named parameters, the order of arguments in a function call is necessarily fixed, since it is the only way that the language can identify which argument is intended to be used for which parameter.

With named parameters, it is usually possible to provide the arguments in any order, since the parameter name attached to each argument identifies its purpose. This reduces the connascence between parts of the program. A few languages support named parameters but still require the arguments to be provided in a specific order.

Optional parameters and positional parameters

Named parameters are often used in conjunction with optional parameters. Without named parameters, optional parameters can only appear at the end of the parameter list, since there is no other way to determine which values have been omitted. In languages that support named optional parameters, however, programs may supply any subset of the available parameters, and the names are used to determine which values have been provided.

An added complication arises in languages such as OCaml that support both optional named parameters and partial application. It is impossible in general to distinguish between a function partly applied, and a function to which a subset of parameters have been provided. OCaml resolves this ambiguity by requiring a positional argument after all optional named-parameter arguments: its presence or absence is used to decide if the function has been fully or partly applied. If all parameters are optional, the implementor may solve the issue by adding a dummy positional parameter of type unit.

In MediaWiki, the codes (variables) {{{1}}}, {{{2}}} in templates and so on, will be replaced by the first, second, and so on unnamed parameter (or the value of a parameter named 1, 2, etc.); these are known as positional parameters.

Emulating

In languages that do not support named parameters, some of the same benefits can be achieved in other ways.

With documentation

Their value as documentation can be replicated by tooltips in integrated development environments (IDEs) for languages such as Java, or with comments (in C):

MyFunctionCall(  20, /* x coordinate */  50, /* y coordinate */  100, /* width */  5, /* height */  TRUE /* drawing now? */ ); 

Such comments are not checked for correctness and the order of arguments remains important.

With data structures

Removing the argument order restriction, and the ability to leave some values unspecified, can be achieved by passing a record or associative array.

For example, in JavaScript, these two calls are equivalent:

MyFunctionCall({ xPosition: 20, yPosition: 50, width: 100, height: 5, drawingNow: true }); 
MyFunctionCall({ width: 100, height: 5, xPosition: 20, yPosition: 50, drawingNow: true }); 

Compare to C99:[13]

struct MyParam {  int xPosition;  int yPosition;  int width;  int height;  unsigned char drawingNow; };  MyParam parameters = { .xPosition = 20, .yPosition = 50,  .width = 100, .height = 5, .drawingNow = TRUE }; MyFunctionCall(&parameters); 

Special Support

In Perl and pre-2.0 Ruby a similar convention exists (generally called a hash or options hash[14]), with special support for omitting the delimiters within function calls. As an example, the core module's Net::FTP new function accepts a hash of optional arguments.[15]

With chained method calls

In object-oriented programming languages, it is possible to use method chaining to simulate named parameters, as a form of fluent interface. Each named-parameter argument is replaced with a method on an "arguments" object that modifies and then returns the object. In C++, this is termed the named parameter idiom.[16] The object may then be passed to a function that uses the arguments it contains.

Method chaining is often used in conjunction with the builder pattern as a way to override default values provided by the builder class.

See also

References

  1. ^ Reference Manual for the Ada Programming Language. United States Department of Defense. 1983.
  2. ^ BillWagner. "Named and Optional Arguments - C# Programming Guide". docs.microsoft.com. Retrieved 2021-06-16.
  3. ^ "Functions". lispcookbook.github.io. Retrieved 2021-10-28.
  4. ^ "Functions | Kotlin". Kotlin Help. Retrieved 2021-06-16.
  5. ^ "8. Compound statements". docs.python.org. Retrieved 2021-10-28.
  6. ^ "10.3 Named arguments and defaults". An Introduction to R. Retrieved 2021-10-28.
  7. ^ "PHP: Function arguments - Manual". www.php.net. Retrieved 2021-06-16.
  8. ^ "Ruby 2 Keyword Arguments". thoughtbot.com. 21 July 2014. Retrieved 2021-10-28.
  9. ^ "Named Arguments". Scala Documentation. Retrieved 2021-06-16.
  10. ^ "Functions — The Swift Programming Language (Swift 5.1)". docs.swift.org. Retrieved 2020-01-27.
  11. ^ KathleenDollard. "Passing Arguments by Position and by Name - Visual Basic". docs.microsoft.com. Retrieved 2021-06-16.
  12. ^ Developer Library - The Implementation of a Class Provides Its Internal Behavior
  13. ^ "Designated Inits (Using the GNU Compiler Collection (GCC))".
  14. ^ Programming Perl 2.9: Hashes
  15. ^ Perl core module Net::FTP
  16. ^ C++ FAQ, 10.20 What is the "Named Parameter Idiom"?

External links

  • In C++ this paradigm can be easily implemented: Boost Parameter Library
  • Named Parameters in various programming languages at Rosetta Code

named, parameter, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, news, newspapers, books, scholar, jstor, august, 2. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Named parameter news newspapers books scholar JSTOR August 2014 Learn how and when to remove this template message In computer programming named parameters named parameter arguments named arguments or keyword arguments refer to a computer language s support for function calls to clearly associate each argument with a given parameter parameter within the function call Contents 1 Overview 2 Use in programming languages 3 Order of parameters 4 Optional parameters and positional parameters 5 Emulating 5 1 With documentation 5 2 With data structures 5 2 1 Special Support 5 3 With chained method calls 6 See also 7 References 8 External linksOverview EditA function call using named parameters differs from a regular function call in that the arguments are passed by associating each one with a parameter name instead of providing an ordered list of arguments For example consider this Java or C method call that doesn t use named parameters window addNewControl Title 20 50 100 50 true Using named parameters in Python the call can be written as window addNewControl title Title xPosition 20 yPosition 50 width 100 height 50 drawingNow True Using named parameters in PHP the call can be written as window gt addNewControl title Title xPosition 20 yPosition 50 width 100 height 50 drawingNow True The version with positional arguments is more implicit The versions that name parameters are more explicit Depending on circumstance a programmer may find one or the other to be easier to read Use in programming languages EditNamed parameters are supported explicitly in many languages A non exhaustive selection of examples includes Ada 1 C 4 0 2 Ceylon citation needed ColdFusion Markup Language CFML citation needed Common Lisp 3 Fortran citation needed IDL citation needed Kotlin 4 Mathematica citation needed PL SQL citation needed PowerShell citation needed Python 5 R 6 PHP 7 Ruby 8 Scala 9 Smalltalk citation needed Swift 10 and Visual Basic 11 Note that Objective C does not have named parameters even though parts of the method name may look like named parameters 12 Order of parameters EditIn languages that do not support named parameters the order of arguments in a function call is necessarily fixed since it is the only way that the language can identify which argument is intended to be used for which parameter With named parameters it is usually possible to provide the arguments in any order since the parameter name attached to each argument identifies its purpose This reduces the connascence between parts of the program A few languages support named parameters but still require the arguments to be provided in a specific order Optional parameters and positional parameters EditMain article Default argument Named parameters are often used in conjunction with optional parameters Without named parameters optional parameters can only appear at the end of the parameter list since there is no other way to determine which values have been omitted In languages that support named optional parameters however programs may supply any subset of the available parameters and the names are used to determine which values have been provided An added complication arises in languages such as OCaml that support both optional named parameters and partial application It is impossible in general to distinguish between a function partly applied and a function to which a subset of parameters have been provided OCaml resolves this ambiguity by requiring a positional argument after all optional named parameter arguments its presence or absence is used to decide if the function has been fully or partly applied If all parameters are optional the implementor may solve the issue by adding a dummy positional parameter of type unit In MediaWiki the codes variables 1 2 in templates and so on will be replaced by the first second and so on unnamed parameter or the value of a parameter named 1 2 etc these are known as positional parameters Emulating EditIn languages that do not support named parameters some of the same benefits can be achieved in other ways With documentation Edit Their value as documentation can be replicated by tooltips in integrated development environments IDEs for languages such as Java or with comments in C MyFunctionCall 20 x coordinate 50 y coordinate 100 width 5 height TRUE drawing now Such comments are not checked for correctness and the order of arguments remains important With data structures Edit Removing the argument order restriction and the ability to leave some values unspecified can be achieved by passing a record or associative array For example in JavaScript these two calls are equivalent MyFunctionCall xPosition 20 yPosition 50 width 100 height 5 drawingNow true MyFunctionCall width 100 height 5 xPosition 20 yPosition 50 drawingNow true Compare to C99 13 struct MyParam int xPosition int yPosition int width int height unsigned char drawingNow MyParam parameters xPosition 20 yPosition 50 width 100 height 5 drawingNow TRUE MyFunctionCall amp parameters Special Support Edit In Perl and pre 2 0 Ruby a similar convention exists generally called a hash or options hash 14 with special support for omitting the delimiters within function calls As an example the core module s Net FTP new function accepts a hash of optional arguments 15 With chained method calls Edit In object oriented programming languages it is possible to use method chaining to simulate named parameters as a form of fluent interface Each named parameter argument is replaced with a method on an arguments object that modifies and then returns the object In C this is termed the named parameter idiom 16 The object may then be passed to a function that uses the arguments it contains Method chaining is often used in conjunction with the builder pattern as a way to override default values provided by the builder class See also EditHelp Template for named and positional parameters Fluent interface Tag programming References Edit Reference Manual for the Ada Programming Language United States Department of Defense 1983 BillWagner Named and Optional Arguments C Programming Guide docs microsoft com Retrieved 2021 06 16 Functions lispcookbook github io Retrieved 2021 10 28 Functions Kotlin Kotlin Help Retrieved 2021 06 16 8 Compound statements docs python org Retrieved 2021 10 28 10 3 Named arguments and defaults An Introduction to R Retrieved 2021 10 28 PHP Function arguments Manual www php net Retrieved 2021 06 16 Ruby 2 Keyword Arguments thoughtbot com 21 July 2014 Retrieved 2021 10 28 Named Arguments Scala Documentation Retrieved 2021 06 16 Functions The Swift Programming Language Swift 5 1 docs swift org Retrieved 2020 01 27 KathleenDollard Passing Arguments by Position and by Name Visual Basic docs microsoft com Retrieved 2021 06 16 Developer Library The Implementation of a Class Provides Its Internal Behavior Designated Inits Using the GNU Compiler Collection GCC Programming Perl 2 9 Hashes Perl core module Net FTP C FAQ 10 20 What is the Named Parameter Idiom External links Edithttps web archive org web 20070502112455 http plg uwaterloo ca rgesteve cforall named pars html In C this paradigm can be easily implemented Boost Parameter Library Named Parameters in various programming languages at Rosetta Code Retrieved from https en wikipedia org w index php title Named parameter amp oldid 1131192920, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.