Site icon C1CTech

Kotlin Default and Named Arguments

<p>In this article&comma; you will learn about default and named arguments with the help of examples&period;<&sol;p>&NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Kotlin Default Argument<&sol;strong><&sol;span><&sol;h3>&NewLine;<p>In Kotlin&comma; you can provide default values to parameters in the function definition and the parameter with a default value is called <span style&equals;"color&colon; &num;008000&semi;"><strong>default argument<&sol;strong><&sol;span>&period;<&sol;p>&NewLine;<p>There are three cases for default arguments&colon;<&sol;p>&NewLine;<h4><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Case I&colon; All arguments passed<&sol;strong><&sol;span><&sol;h4>&NewLine;<p>When all arguments are passed during a function call then passed arguments are used as function parameters&period;<&sol;p>&NewLine;<p>The data type of actual arguments must match with the data type of formal arguments &lpar;arguments defined in the function definition&rpar; in same order&period;<&sol;p>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre><strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;employee&lpar;&rpar; definition&NewLine;&sol;&sol;emp&lowbar;id&comma; emp&lowbar;fname&comma; emp&lowbar;lname&comma; emp&lowbar;salary are default arguments<&sol;span><&sol;strong>&NewLine;fun <span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;emp&lowbar;id&colon; Int &equals; 1&comma; emp&lowbar;fname&colon; String &equals; "Arun"&comma; emp&lowbar;lname&colon; String &equals; "Verma"&comma; emp&lowbar;salary&colon; Long &equals; 45000&rpar;<&sol;strong><&sol;span> &lbrace;&NewLine; println&lpar;"Employee Name&colon; &dollar;emp&lowbar;fname &dollar;emp&lowbar;lname"&rpar;&NewLine; println&lpar;"Employee Id&colon; &dollar;emp&lowbar;id"&rpar;&NewLine; println&lpar;"Employee Salary&colon; &dollar;emp&lowbar;salary"&rpar;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;passing all arguments while calling employee&lpar;&rpar; <&sol;strong><&sol;span>&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;4&comma; "Ramesh"&comma; "Singh"&comma; 50000&rpar;<&sol;span><&sol;strong> &NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>Employee Name&colon; Ramesh Singh&NewLine;Employee Id&colon; 4&NewLine;Employee Salary&colon; 50000<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example explained&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<ul>&NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;&rpar;<&sol;strong><&sol;span> definition&comma; accepts four default arguments ie&period; <span style&equals;"color&colon; &num;008000&semi;"><strong>emp&lowbar;id&comma; emp&lowbar;fname&comma; emp&lowbar;lname <&sol;strong><span style&equals;"color&colon; &num;000000&semi;">and<&sol;span><strong> emp&lowbar;salary<&sol;strong><&sol;span>&period;<&sol;li>&NewLine;<li>During <strong>employee&lpar;&rpar;<&sol;strong> call&comma; if we pass all the arguments then these values will  overwrite the default values for the function parameters&period;<&sol;li>&NewLine;<li>Hence&comma; it prints only the values passed during the function call to the standard output&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h4><&sol;h4>&NewLine;<h4><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Case II&colon; Partial arguments are passed<&sol;strong><&sol;span><&sol;h4>&NewLine;<p>When some of the arguments are passed while calling a function then these passed arguments are used as function parameters&period;<&sol;p>&NewLine;<p>If any formal parameter does not get value from the function call then the default value will be used for that parameter&period;<&sol;p>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre><span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;employee&lpar;&rpar; definition&NewLine;&sol;&sol;emp&lowbar;id&comma; emp&lowbar;fname&comma; emp&lowbar;lname&comma; emp&lowbar;salary are default arguments<&sol;strong><&sol;span>&NewLine;fun <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;emp&lowbar;fname&colon; String &equals; "Arun"&comma; emp&lowbar;lname&colon; String &equals; "Verma"&comma; emp&lowbar;id&colon; Int &equals; 1&comma; emp&lowbar;salary&colon; Long &equals; 45000&rpar;<&sol;span><&sol;strong> &lbrace;&NewLine; println&lpar;"Employee Name&colon; &dollar;emp&lowbar;fname &dollar;emp&lowbar;lname"&rpar;&NewLine; println&lpar;"Employee Id&colon; &dollar;emp&lowbar;id"&rpar;&NewLine; println&lpar;"Employee Salary&colon; &dollar;emp&lowbar;salary"&rpar;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;passing three arguments emp&lowbar;fname&comma; emp&lowbar;lname&comma; emp&lowbar;id<&sol;strong><&sol;span>&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;while calling employee&lpar;&rpar;<&sol;strong><&sol;span>&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;"Manisha"&comma; "Thakur"&comma; 2&rpar;<&sol;span><&sol;strong> &NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>Employee Name&colon; Manisha Thakur&NewLine;Employee Id&colon; 2&NewLine;Employee Salary&colon; 45000<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example explained&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<ul>&NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;&rpar;<&sol;strong><&sol;span> definition&comma; accepts four default arguments ie&period; <span style&equals;"color&colon; &num;008000&semi;"><strong>emp&lowbar;id&comma; emp&lowbar;fname&comma; emp&lowbar;lname <&sol;strong><span style&equals;"color&colon; &num;000000&semi;">and<&sol;span><strong> emp&lowbar;salary<&sol;strong><&sol;span>&period;<&sol;li>&NewLine;<li>During <strong>employee&lpar;&rpar;<&sol;strong> call&comma; we have passed values only for <span style&equals;"color&colon; &num;008000&semi;"><strong>emp&lowbar;fname&comma; emp&lowbar;lname&comma; emp&lowbar;id<&sol;strong><&sol;span> and for <strong><span style&equals;"color&colon; &num;008000&semi;">emp&lowbar;salary<&sol;span><&sol;strong> it will use the default value<strong> &lpar;45000&rpar;<&sol;strong>&period;<&sol;li>&NewLine;<li>print all the values to the standard output&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h4><&sol;h4>&NewLine;<h4><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Case III&colon; No argument is passed <&sol;strong><&sol;span><&sol;h4>&NewLine;<p>When no argument is passed while calling a function then the default arguments are used as function parameters&period;<&sol;p>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre><span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;employee&lpar;&rpar; definition<&sol;strong><&sol;span>&NewLine;<strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;emp&lowbar;id&comma; emp&lowbar;fname&comma; emp&lowbar;lname&comma; emp&lowbar;salary are default arguments<&sol;span><&sol;strong>&NewLine;fun <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;emp&lowbar;id&colon; Int &equals; 1&comma; emp&lowbar;fname&colon; String &equals; "Arun"&comma; emp&lowbar;lname&colon; String &equals; "Verma"&comma; emp&lowbar;salary&colon; Long &equals; 45000&rpar;<&sol;span><&sol;strong> &lbrace;&NewLine; println&lpar;"Employee Name&colon; &dollar;emp&lowbar;fname &dollar;emp&lowbar;lname"&rpar;&NewLine; println&lpar;"Employee Id&colon; &dollar;emp&lowbar;id"&rpar;&NewLine; println&lpar;"Employee Salary&colon; &dollar;emp&lowbar;salary"&rpar;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;passing no arguments while calling employee&lpar;&rpar;<&sol;strong><&sol;span>&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;&rpar;<&sol;span><&sol;strong> &NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>Employee Name&colon; Arun Verma&NewLine;Employee Id&colon; 1&NewLine;Employee Salary&colon; 45000<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example explained&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<ul>&NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;&rpar;<&sol;strong><&sol;span> definition&comma; accepts four default arguments ie&period; <span style&equals;"color&colon; &num;008000&semi;"><strong>emp&lowbar;id&comma; emp&lowbar;fname&comma; emp&lowbar;lname <&sol;strong><span style&equals;"color&colon; &num;000000&semi;">and<&sol;span><strong> emp&lowbar;salary<&sol;strong><&sol;span>&period;<&sol;li>&NewLine;<li>During <strong>employee&lpar;&rpar;<&sol;strong> call&comma; no arguments are passed so it uses the default arguments as function parameters&period;<&sol;li>&NewLine;<li>prints the default values to the standard output&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3><&sol;h3>&NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Kotlin Named Argument<&sol;strong><&sol;span><&sol;h3>&NewLine;<p>In Kotlin&comma; function parameters can be named when calling functions&period; The arguments that are passed using name while calling a function are called <span style&equals;"color&colon; &num;008000&semi;"><strong>named arguments<&sol;strong><&sol;span>&period;<&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine;&NewLine;<p>This is very convenient when a function has a high number of parameters or default ones&period;<&sol;p>&NewLine;<p><span style&equals;"color&colon; &num;000080&semi;"><strong>Note&colon;<&sol;strong><&sol;span> While calling function&comma; we must use the name of the formal argument to which we are passing the actual argument value and using named arguments&comma; now we can pass actual arguments in random order&period;<&sol;p>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>calculateAmount&lpar;20000&comma;1000&comma;500&rpar;<&sol;pre>&NewLine;<p>Suppose <span style&equals;"color&colon; &num;0000ff&semi;"><strong>calculateAmount&lpar;&rpar;<&sol;strong><&sol;span> definition exist somewhere else in your program&period; When a programmer reads the above line he may confused&comma; which value represents what&period;<&sol;p>&NewLine;<p>To avoid this confusion&comma; function parameters can be named when calling functions&period;For example&colon;<&sol;p>&NewLine;<pre>calculateAmount&lpar;balance&equals;20000&comma; withdraw&lowbar;amount&equals;1000&comma; deposit&lowbar;amount&equals;500&rpar;<&sol;pre>&NewLine;<p>Another benefit of using Named Argument comes while working with the default arguments&period;<&sol;p>&NewLine;<p>During function call&comma; if we pass the arguments in random order then it will give compilation error so we have to pass the actual arguments in the same order as defined during function declaration&period;<&sol;p>&NewLine;<h5><strong><span style&equals;"color&colon; &num;0000ff&semi;">Example&colon;<&sol;span><&sol;strong><&sol;h5>&NewLine;<pre>fun <span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;emp&lowbar;fname&colon; String &equals; "Arun"&comma; emp&lowbar;lname&colon; String &equals; "Verma"&comma; <span style&equals;"color&colon; &num;0000ff&semi;">emp&lowbar;id&colon; Int&comma; emp&lowbar;salary&colon; Long<&sol;span>&rpar;<&sol;strong><&sol;span> &lbrace;&NewLine; println&lpar;"Employee Name&colon; &dollar;emp&lowbar;fname &dollar;emp&lowbar;lname"&rpar;&NewLine; println&lpar;"Employee Id&colon; &dollar;emp&lowbar;id"&rpar;&NewLine; println&lpar;"Employee Salary&colon; &dollar;emp&lowbar;salary"&rpar;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;compilation error&NewLine; &sol;&sol;passing values in random order<&sol;strong><&sol;span>&NewLine; <span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;"Asha"&comma; 5&comma; "Verma"&comma; 23000&rpar;<&sol;strong><&sol;span><&sol;pre>&NewLine;<p>In the above program&comma; we have not passed the arguments in the order as these were defined in the function definition&period; So&comma; it gives compilation error&period;<&sol;p>&NewLine;<p><strong><span style&equals;"color&colon; &num;000080&semi;">Note&colon;<&sol;span><&sol;strong> If a default parameter precedes a parameter with no default value&comma; the default value can only be used by calling the function with <span style&equals;"color&colon; &num;008000&semi;"><strong>named arguments<&sol;strong><&sol;span>&colon;<&sol;p>&NewLine;<pre><strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;employee&lpar;&rpar; definition<&sol;span><&sol;strong>&NewLine;fun <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;emp&lowbar;fname&colon; String &equals; "Arun"&comma; emp&lowbar;lname&colon; String &equals; "Verma"&comma; <span style&equals;"color&colon; &num;000080&semi;">emp&lowbar;id&colon; Int&comma; emp&lowbar;salary&colon; Long<&sol;span><&sol;span>&rpar;<&sol;strong> &lbrace;&NewLine; println&lpar;"Employee Name&colon; &dollar;emp&lowbar;fname &dollar;emp&lowbar;lname"&rpar;&NewLine; println&lpar;"Employee Id&colon; &dollar;emp&lowbar;id"&rpar;&NewLine; println&lpar;"Employee Salary&colon; &dollar;emp&lowbar;salary"&rpar;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine; <strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;calling employee&lpar;&rpar; with named arguments to use default values<&sol;span> &NewLine;<&sol;strong> <span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;emp&lowbar;id&comma;emp&lowbar;salary must match with the name of formal arguments<&sol;strong><&sol;span>&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;emp&lowbar;id &equals; 3&comma; emp&lowbar;salary &equals; 50000&rpar;<&sol;span><&sol;strong> &NewLine;&rcub;<&sol;pre>&NewLine;<h5><strong><span style&equals;"color&colon; &num;0000ff&semi;">Output&colon;<&sol;span><&sol;strong><&sol;h5>&NewLine;<pre>Employee Name&colon; Arun Verma &NewLine;Employee Id&colon; 3 &NewLine;Employee Salary&colon; 50000<&sol;pre>&NewLine;<h5><strong><span style&equals;"color&colon; &num;0000ff&semi;">Example explained&colon;<&sol;span><&sol;strong><&sol;h5>&NewLine;<ul>&NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;&rpar;<&sol;strong><&sol;span> definition&comma; accepts four parameters ie&period;<strong><span style&equals;"color&colon; &num;008000&semi;"> emp&lowbar;fname&comma; emp&lowbar;lname&comma; emp&lowbar;id <&sol;span><&sol;strong><span style&equals;"color&colon; &num;008000&semi;"><span style&equals;"color&colon; &num;000000&semi;">and<&sol;span><&sol;span><strong><span style&equals;"color&colon; &num;008000&semi;"> emp&lowbar;salary<&sol;span><&sol;strong> in which <strong><span style&equals;"color&colon; &num;008000&semi;">emp&lowbar;fname<&sol;span><&sol;strong> and <strong><span style&equals;"color&colon; &num;008000&semi;">emp&lowbar;lname<&sol;span><&sol;strong> are default arguments&period;<&sol;li>&NewLine;<li>The <span style&equals;"color&colon; &num;008000&semi;"><strong>default values<&sol;strong><&sol;span> &lpar;emp&lowbar;fname&comma; emp&lowbar;lname&rpar; can only be used by calling <strong>employee&lpar;&rpar;<&sol;strong> with <span style&equals;"color&colon; &num;008000&semi;"><strong>named arguments<&sol;strong><&sol;span> &lpar;emp&lowbar;id&comma; emp&lowbar;salary&rpar;&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3><&sol;h3>&NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Example&colon; Named Argument<&sol;strong><&sol;span><&sol;h3>&NewLine;<pre><span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;employee&lpar;&rpar; definition<&sol;strong><&sol;span>&NewLine;fun <span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;emp&lowbar;fname&colon; String &equals; "Arun"&comma; emp&lowbar;lname&colon; String &equals; "Verma"&comma; emp&lowbar;id&colon; Int &equals; 3&comma; emp&lowbar;salary&colon; Long &equals; 45000&rpar;<&sol;strong><&sol;span> &lbrace;&NewLine; println&lpar;"Employee Name&colon; &dollar;emp&lowbar;fname &dollar;emp&lowbar;lname"&rpar;&NewLine; println&lpar;"Employee Id&colon; &dollar;emp&lowbar;id"&rpar;&NewLine; println&lpar;"Employee Salary&colon; &dollar;emp&lowbar;salary"&rpar;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine;<strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;calling employee&lpar;&rpar; with named arguments&NewLine;&sol;&sol;emp&lowbar;id&comma;emp&lowbar;salary must match with the name of formal arguments<&sol;span><&sol;strong>&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">employee&lpar;&NewLine; emp&lowbar;fname &equals; "Mohit"&comma;&NewLine; emp&lowbar;lname &equals; "Singh"&comma;&NewLine; emp&lowbar;id &equals; 5&comma;&NewLine; emp&lowbar;salary &equals; 23000&NewLine; &rpar;<&sol;span><&sol;strong>&NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>Employee Name&colon; Mohit Singh&NewLine;Employee Id&colon; 5&NewLine;Employee Salary&colon; 23000<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example explained&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<ul>&NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>employee&lpar;&rpar;<&sol;strong><&sol;span> definition&comma; accepts four default arguments ie&period; <span style&equals;"color&colon; &num;008000&semi;"><strong>emp&lowbar;id&comma; emp&lowbar;fname&comma; emp&lowbar;lname <&sol;strong><span style&equals;"color&colon; &num;000000&semi;">and<&sol;span><strong> emp&lowbar;salary<&sol;strong><&sol;span>&period;<&sol;li>&NewLine;<li>Values passed during the employee&lpar;&rpar; call&comma; will overwrite the default values for the function parameters&period;<&sol;li>&NewLine;<li>Hence&comma; it prints only the values passed during the function call&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;&NewLine;

Exit mobile version