<p>In this article, you will learn about default and named arguments with the help of examples.</p>
<h3><span style="color: #000080;"><strong>Kotlin Default Argument</strong></span></h3>
<p>In Kotlin, you can provide default values to parameters in the function definition and the parameter with a default value is called <span style="color: #008000;"><strong>default argument</strong></span>.</p>
<p>There are three cases for default arguments:</p>
<h4><span style="color: #0000ff;"><strong>Case I: All arguments passed</strong></span></h4>
<p>When all arguments are passed during a function call then passed arguments are used as function parameters.</p>
<p>The data type of actual arguments must match with the data type of formal arguments (arguments defined in the function definition) in same order.</p>
<h5><span style="color: #0000ff;"><strong>Example:</strong></span></h5>
<pre><strong><span style="color: #008000;">//employee() definition
//emp_id, emp_fname, emp_lname, emp_salary are default arguments</span></strong>
fun <span style="color: #0000ff;"><strong>employee(emp_id: Int = 1, emp_fname: String = "Arun", emp_lname: String = "Verma", emp_salary: Long = 45000)</strong></span> {
 println("Employee Name: $emp_fname $emp_lname")
 println("Employee Id: $emp_id")
 println("Employee Salary: $emp_salary")
}

fun main(args: Array<;String>;) {
 <span style="color: #008000;"><strong>//passing all arguments while calling employee() </strong></span>
 <strong><span style="color: #0000ff;">employee(4, "Ramesh", "Singh", 50000)</span></strong> 
}</pre>
<h5><span style="color: #0000ff;"><strong>Output:</strong></span></h5>
<pre>Employee Name: Ramesh Singh
Employee Id: 4
Employee Salary: 50000</pre>
<h5><span style="color: #0000ff;"><strong>Example explained:</strong></span></h5>
<ul>
<li><span style="color: #0000ff;"><strong>employee()</strong></span> definition, accepts four default arguments ie. <span style="color: #008000;"><strong>emp_id, emp_fname, emp_lname </strong><span style="color: #000000;">and</span><strong> emp_salary</strong></span>.</li>
<li>During <strong>employee()</strong> call, if we pass all the arguments then these values will overwrite the default values for the function parameters.</li>
<li>Hence, it prints only the values passed during the function call to the standard output.</li>
</ul>
<h4></h4>
<h4><span style="color: #0000ff;"><strong>Case II: Partial arguments are passed</strong></span></h4>
<p>When some of the arguments are passed while calling a function then these passed arguments are used as function parameters.</p>
<p>If any formal parameter does not get value from the function call then the default value will be used for that parameter.</p>
<h5><span style="color: #0000ff;"><strong>Example:</strong></span></h5>
<pre><span style="color: #008000;"><strong>//employee() definition
//emp_id, emp_fname, emp_lname, emp_salary are default arguments</strong></span>
fun <strong><span style="color: #0000ff;">employee(emp_fname: String = "Arun", emp_lname: String = "Verma", emp_id: Int = 1, emp_salary: Long = 45000)</span></strong> {
 println("Employee Name: $emp_fname $emp_lname")
 println("Employee Id: $emp_id")
 println("Employee Salary: $emp_salary")
}

fun main(args: Array<;String>;) {
 <span style="color: #008000;"><strong>//passing three arguments emp_fname, emp_lname, emp_id</strong></span>
<span style="color: #008000;"><strong> //while calling employee()</strong></span>
 <strong><span style="color: #0000ff;">employee("Manisha", "Thakur", 2)</span></strong> 
}</pre>
<h5><span style="color: #0000ff;"><strong>Output:</strong></span></h5>
<pre>Employee Name: Manisha Thakur
Employee Id: 2
Employee Salary: 45000</pre>
<h5><span style="color: #0000ff;"><strong>Example explained:</strong></span></h5>
<ul>
<li><span style="color: #0000ff;"><strong>employee()</strong></span> definition, accepts four default arguments ie. <span style="color: #008000;"><strong>emp_id, emp_fname, emp_lname </strong><span style="color: #000000;">and</span><strong> emp_salary</strong></span>.</li>
<li>During <strong>employee()</strong> call, we have passed values only for <span style="color: #008000;"><strong>emp_fname, emp_lname, emp_id</strong></span> and for <strong><span style="color: #008000;">emp_salary</span></strong> it will use the default value<strong> (45000)</strong>.</li>
<li>print all the values to the standard output.</li>
</ul>
<h4></h4>
<h4><span style="color: #0000ff;"><strong>Case III: No argument is passed </strong></span></h4>
<p>When no argument is passed while calling a function then the default arguments are used as function parameters.</p>
<h5><span style="color: #0000ff;"><strong>Example:</strong></span></h5>
<pre><span style="color: #008000;"><strong>//employee() definition</strong></span>
<strong><span style="color: #008000;">//emp_id, emp_fname, emp_lname, emp_salary are default arguments</span></strong>
fun <strong><span style="color: #0000ff;">employee(emp_id: Int = 1, emp_fname: String = "Arun", emp_lname: String = "Verma", emp_salary: Long = 45000)</span></strong> {
 println("Employee Name: $emp_fname $emp_lname")
 println("Employee Id: $emp_id")
 println("Employee Salary: $emp_salary")
}

fun main(args: Array<;String>;) {
 <span style="color: #008000;"><strong>//passing no arguments while calling employee()</strong></span>
 <strong><span style="color: #0000ff;">employee()</span></strong> 
}</pre>
<h5><span style="color: #0000ff;"><strong>Output:</strong></span></h5>
<pre>Employee Name: Arun Verma
Employee Id: 1
Employee Salary: 45000</pre>
<h5><span style="color: #0000ff;"><strong>Example explained:</strong></span></h5>
<ul>
<li><span style="color: #0000ff;"><strong>employee()</strong></span> definition, accepts four default arguments ie. <span style="color: #008000;"><strong>emp_id, emp_fname, emp_lname </strong><span style="color: #000000;">and</span><strong> emp_salary</strong></span>.</li>
<li>During <strong>employee()</strong> call, no arguments are passed so it uses the default arguments as function parameters.</li>
<li>prints the default values to the standard output.</li>
</ul>
<h3></h3>
<h3><span style="color: #000080;"><strong>Kotlin Named Argument</strong></span></h3>
<p>In Kotlin, function parameters can be named when calling functions. The arguments that are passed using name while calling a function are called <span style="color: #008000;"><strong>named arguments</strong></span>.</p>
<!-- WP QUADS Content Ad Plugin v. 2.0.98.1 -->
<div class="quads-location quads-ad2" id="quads-ad2" style="float:none;margin:0px;">

</div>

<p>This is very convenient when a function has a high number of parameters or default ones.</p>
<p><span style="color: #000080;"><strong>Note:</strong></span> While calling function, we must use the name of the formal argument to which we are passing the actual argument value and using named arguments, now we can pass actual arguments in random order.</p>
<h5><span style="color: #0000ff;"><strong>Example:</strong></span></h5>
<pre>calculateAmount(20000,1000,500)</pre>
<p>Suppose <span style="color: #0000ff;"><strong>calculateAmount()</strong></span> definition exist somewhere else in your program. When a programmer reads the above line he may confused, which value represents what.</p>
<p>To avoid this confusion, function parameters can be named when calling functions.For example:</p>
<pre>calculateAmount(balance=20000, withdraw_amount=1000, deposit_amount=500)</pre>
<p>Another benefit of using Named Argument comes while working with the default arguments.</p>
<p>During function call, 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.</p>
<h5><strong><span style="color: #0000ff;">Example:</span></strong></h5>
<pre>fun <span style="color: #0000ff;"><strong>employee(emp_fname: String = "Arun", emp_lname: String = "Verma", <span style="color: #0000ff;">emp_id: Int, emp_salary: Long</span>)</strong></span> {
 println("Employee Name: $emp_fname $emp_lname")
 println("Employee Id: $emp_id")
 println("Employee Salary: $emp_salary")
}

fun main(args: Array<;String>;) {
 <span style="color: #008000;"><strong> //compilation error
 //passing values in random order</strong></span>
 <span style="color: #0000ff;"><strong>employee("Asha", 5, "Verma", 23000)</strong></span></pre>
<p>In the above program, we have not passed the arguments in the order as these were defined in the function definition. So, it gives compilation error.</p>
<p><strong><span style="color: #000080;">Note:</span></strong> If a default parameter precedes a parameter with no default value, the default value can only be used by calling the function with <span style="color: #008000;"><strong>named arguments</strong></span>:</p>
<pre><strong><span style="color: #008000;">//employee() definition</span></strong>
fun <strong><span style="color: #0000ff;">employee(emp_fname: String = "Arun", emp_lname: String = "Verma", <span style="color: #000080;">emp_id: Int, emp_salary: Long</span></span>)</strong> {
 println("Employee Name: $emp_fname $emp_lname")
 println("Employee Id: $emp_id")
 println("Employee Salary: $emp_salary")
}

fun main(args: Array<;String>;) {
 <strong><span style="color: #008000;"> //calling employee() with named arguments to use default values</span> 
</strong> <span style="color: #008000;"><strong> //emp_id,emp_salary must match with the name of formal arguments</strong></span>
 <strong><span style="color: #0000ff;">employee(emp_id = 3, emp_salary = 50000)</span></strong> 
}</pre>
<h5><strong><span style="color: #0000ff;">Output:</span></strong></h5>
<pre>Employee Name: Arun Verma 
Employee Id: 3 
Employee Salary: 50000</pre>
<h5><strong><span style="color: #0000ff;">Example explained:</span></strong></h5>
<ul>
<li><span style="color: #0000ff;"><strong>employee()</strong></span> definition, accepts four parameters ie.<strong><span style="color: #008000;"> emp_fname, emp_lname, emp_id </span></strong><span style="color: #008000;"><span style="color: #000000;">and</span></span><strong><span style="color: #008000;"> emp_salary</span></strong> in which <strong><span style="color: #008000;">emp_fname</span></strong> and <strong><span style="color: #008000;">emp_lname</span></strong> are default arguments.</li>
<li>The <span style="color: #008000;"><strong>default values</strong></span> (emp_fname, emp_lname) can only be used by calling <strong>employee()</strong> with <span style="color: #008000;"><strong>named arguments</strong></span> (emp_id, emp_salary).</li>
</ul>
<h3></h3>
<h3><span style="color: #000080;"><strong>Example: Named Argument</strong></span></h3>
<pre><span style="color: #008000;"><strong>//employee() definition</strong></span>
fun <span style="color: #0000ff;"><strong>employee(emp_fname: String = "Arun", emp_lname: String = "Verma", emp_id: Int = 3, emp_salary: Long = 45000)</strong></span> {
 println("Employee Name: $emp_fname $emp_lname")
 println("Employee Id: $emp_id")
 println("Employee Salary: $emp_salary")
}

fun main(args: Array<;String>;) {
<strong><span style="color: #008000;">//calling employee() with named arguments
//emp_id,emp_salary must match with the name of formal arguments</span></strong>
 <strong><span style="color: #0000ff;">employee(
 emp_fname = "Mohit",
 emp_lname = "Singh",
 emp_id = 5,
 emp_salary = 23000
 )</span></strong>
}</pre>
<h5><span style="color: #0000ff;"><strong>Output:</strong></span></h5>
<pre>Employee Name: Mohit Singh
Employee Id: 5
Employee Salary: 23000</pre>
<h5><span style="color: #0000ff;"><strong>Example explained:</strong></span></h5>
<ul>
<li><span style="color: #0000ff;"><strong>employee()</strong></span> definition, accepts four default arguments ie. <span style="color: #008000;"><strong>emp_id, emp_fname, emp_lname </strong><span style="color: #000000;">and</span><strong> emp_salary</strong></span>.</li>
<li>Values passed during the employee() call, will overwrite the default values for the function parameters.</li>
<li>Hence, it prints only the values passed during the function call.</li>
</ul>


