Kotlin | Argumento predeterminado y con nombre

En la mayoría de los lenguajes de programación, necesitamos especificar todos los argumentos que acepta una función al llamar a esa función, pero en Kotlin, no necesitamos especificar todos los argumentos que acepta una función al llamar a esa función, por lo que es una de las características más importantes. . Podemos deshacernos de esta restricción y hacer que el parámetro sea opcional, es decir, pasar un argumento o no al llamar a una función.
En Kotlin, los parámetros de las funciones se separan mediante comas y se definen mediante la notación de Pascal, es decir, nombre:tipo_de_datos. 
 

fun fun_name(name1: data_type, name2: data_type )

Hay dos tipos de argumentos en Kotlin: 
 

  • Argumentos predeterminados
  • Argumentos con nombre

Argumentos por defecto de Kotlin –

Los argumentos que no necesitan especificarse explícitamente al llamar a una función se denominan argumentos  predeterminados .
Si se llama a la función sin pasar argumentos, los argumentos predeterminados se utilizan como parámetros de función. En otros casos, si se pasan argumentos durante una llamada de función, los argumentos pasados ​​se usan como parámetros de función.
Hay tres casos para los argumentos predeterminados: 
 

  1. No se pasan argumentos al llamar a una función
  2. Los argumentos parciales se pasan al llamar a una función
  3. Todos los argumentos se pasan al llamar a una función

No se pasan argumentos al llamar a una función:

Cuando no se pasa ningún argumento al llamar a una función, los argumentos predeterminados se utilizan como parámetros de función. Necesitamos inicializar las variables mientras definimos una función. 
Programa Kotlin para llamar a la función student() sin pasar argumentos –
 

Kotlin

// default arguments in function definition name, standard and roll_no
fun student(name: String="Praveen", standard: String="IX" , roll_no: Int=11) {       
    println("Name of the student is: $name")
    println("Standard of the student is: $standard")
    println("Roll no of the student is: $roll_no")
}
fun main(args: Array<String>) {
    val name_of_student = "Gaurav"
    val standard_of_student = "VIII"
    val roll_no_of_student = 25
    student()         // passing no arguments while calling student
}

Producción: 
 

Name of the student is: Praveen
Standard of the student is: IX
Roll no of the student is: 11

Explicación: 
En el programa anterior, hemos utilizado la función de estudiante que acepta tres argumentos nombre, estándar y roll_no. Tenga en cuenta que hemos inicializado todos los argumentos de los estudiantes con algún valor. Se utiliza para garantizar que si no se pasa nada en el estudiante() al llamar a la función, estos son los valores predeterminados. Por lo tanto, en el programa anterior, no se pasan argumentos, por lo que utiliza los argumentos predeterminados como parámetros de función e imprime los valores predeterminados en la salida estándar.
 

Los argumentos parciales se pasan al llamar a una función:

Aquí, algunos de los argumentos se pasan al llamar a una función y estos se usan como parámetros de función. Si algún parámetro formal no obtiene valor de la llamada a la función, se usará el valor predeterminado para ese parámetro.
Programa Kotlin para llamar a la función student() con el paso de algunos argumentos – 
 

Kotlin

// default arguments in function definition name,standard and roll_no
fun student( name: String="Praveen", standard: String="IX" , roll_no: Int=11 ) {
    println("Name of the student is: $name")
    println("Standard of the student is: $standard")
    println("Roll no of the student is: $roll_no")
}
fun main(args: Array<String>) {
    val name_of_student = "Gaurav"
    val standard_of_student = "VIII"
    val roll_no_of_student = 25
    // passing only two arguments name and standard of student
    student(name_of_student,standard_of_student)
}

Producción: 
 

Name of the student is: Gaurav
Standard of the student is: VIII
Roll no of the student is: 11

Explicación: 
En el programa anterior, hemos utilizado la función de estudiante que acepta tres argumentos nombre, estándar y roll_no. Tenga en cuenta que hemos inicializado todos los argumentos de los estudiantes con algún valor. Aquí, hemos pasado valores solo para el nombre y el estándar del estudiante. Entonces, para roll_no utilizará el valor predeterminado (11) e imprimirá todos los valores en la salida estándar como se muestra arriba. 
 

Todos los argumentos se pasan al llamar a una función –

Aquí, tenemos que pasar todos los argumentos como se define en la definición de la función, pero el tipo de datos de los argumentos reales debe coincidir con el tipo de datos de los argumentos formales en el mismo orden. 
Programa de Kotlin para llamar a la función student() pasando todos los argumentos – 
 

Kotlin

// default arguments in function definition name, standard and roll_no
fun student( name: String="Praveen", standard: String="IX" , roll_no: Int=11 ) {
    println("Name of the student is: $name")
    println("Standard of the student is: $standard")
    println("Roll no of the student is: $roll_no")
}
 
fun main(args: Array<String>) {
    val name_of_student = "Gaurav"
    val standard_of_student = "VIII"
    val roll_no_of_student = 25
 
    //passing all the arguments of student name,
    //standard and roll_no in same order as defined in function
    student(name_of_student,standard_of_student,roll_no_of_student)
}

Producción: 
 

Name of the student is: Gaurav
Standard of the student is: VIII
Roll no of the student is: 25

Explicación: 
En el programa anterior, hemos pasado todos los argumentos al llamar al estudiante() y sobrescribe los valores predeterminados para los parámetros de la función. Por lo tanto, imprime solo los valores que pasan a los argumentos formales durante la llamada a la función.
 

Argumentos con nombre de Kotlin –

Mientras trabajamos con los argumentos predeterminados, nos enfrentamos a un problema. Si mezclamos los argumentos, dará un error de compilación, por lo que debemos pasar los argumentos reales a los argumentos formales en el mismo orden definido durante la declaración de la función. 
Programa Kotlin para llamar a estudiante() pasando argumentos en orden aleatorio- 
 

Kotlin

// default arguments in function definition name,standard and roll_no
fun student( name: String="Praveen", standard: String="IX" , roll_no: Int=11 ) {
    println("Name of the student is: $name")
    println("Standard of the student is: $standard")
    println("Roll no of the student is: $roll_no")
}
 
fun main(args: Array<String>) {
    val name_of_student = "Gaurav"
    val standard_of_student = "VIII"
    val roll_no_of_student = 25
    // passing the argument name_of_student to name
    // and roll_no_of_student to standard
    student(name_of_student,roll_no_of_student)
}

Producción: 
 

Error:(12, 29) Kotlin: Type mismatch: inferred type is Int but String was expected

En el programa anterior, no hemos pasado los argumentos en el orden en que fueron definidos en la función. Entonces, da error de compilación.
Los argumentos que se pasan usando el nombre al llamar a una función se denominan argumentos con nombre. Al llamar a la función, debemos usar el nombre del argumento formal al que estamos pasando el valor del argumento real. 
Programa Kotlin para llamar a estudiante() con el nombre de los argumentos – 
 

Kotlin

// default arguments in function definition
// name,standard and roll_no
fun student( name: String="Praveen", standard: String="IX" , roll_no: Int=11 ) {
    println("Name of the student is: $name")
    println("Standard of the student is: $standard")
    println("Roll no of the student is: $roll_no")
}
 
fun main(args: Array<String>) {
    val name_of_student = "Gaurav"
    val standard_of_student = "VIII"
    val roll_no_of_student = 25
 
    // passing the arguments with name as defined in function
    student(name=name_of_student,roll_no=roll_no_of_student)
}

Producción: 
 

Name of the student is: Gaurav
Standard of the student is: IX
Roll no of the student is: 25

Explicación: 
Aquí, pasamos los argumentos reales usando el nombre a los argumentos formales. Solo para name y roll_no hemos pasado los valores para que imprima el valor predeterminado de «estándar del estudiante».
 

Publicación traducida automáticamente

Artículo escrito por Praveenruhil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *