En Scala , cuando los argumentos pasan a través de la función de llamada por valor, calcula el valor de los argumentos o la expresión pasada una vez antes de llamar a la función. Pero una función de llamada por nombre en Scala llama a la expresión y vuelve a calcular el valor de la expresión pasada cada vez que se accede a ella dentro de la función. Aquí se muestran ejemplos con diferencia y sintaxis.
Llamada por valor
Este método utiliza semántica en modo. Los cambios realizados en el parámetro formal no se transmiten de vuelta a la persona que llama. Cualquier modificación a la variable de parámetro formal dentro de la función o método llamado afecta solo a la ubicación de almacenamiento separada y no se reflejará en el parámetro real en el entorno de llamada. Este método también se denomina llamada por valor.
Sintaxis:
def callByValue(x: Int)
// Scala program of function call-by-value // Creating object object GFG { // Main method def main(args: Array[String]) { // Defined function def ArticleCounts(i: Int) { println("Tanya did article " + "on day one is 1 - Total = " + i) println("Tanya did article " + "on day two is 1 - Total = " + i) println("Tanya did article "+ "on day three is 1 - Total = " + i) println("Tanya did article " + "on day four is 1 - Total = " + i) } var Total = 0; // function call ArticleCounts { Total += 1 ; Total } } }
Tanya did article on day one is 1 - Total = 1 Tanya did article on day two is 1 - Total = 1 Tanya did article on day three is 1 - Total = 1 Tanya did article on day four is 1 - Total = 1
Aquí, mediante el uso del mecanismo de llamada por valor de la función en el programa anterior, el recuento total de artículos no aumentó.
Llamada por nombre
Un mecanismo de llamada por nombre pasa un bloque de código a la llamada de función y el bloque de código se cumple, ejecuta y calcula el valor. el mensaje se imprimirá primero que devuelve el valor.
Sintaxis:
def callByName(x: => Int)
Ejemplo :
// Scala program of function call-by-name // Creating object object main { // Main method def main(args: Array[String]) { // Defined function call-by-name def ArticleCounts(i: => Int) { println("Tanya did articles " + " on day one is 1 - Total = " + i) println("Tanya did articles "+ "on day two is 1 - Total = " + i) println("Tanya did articles " + "on day three is 1 - Total = " + i) println("Tanya did articles " + "on day four is 1 - Total = " + i) } var Total = 0; // calling function ArticleCounts { Total += 1 ; Total } } }
Tanya did articles on day one is 1 - Total = 1 Tanya did articles on day two is 1 - Total = 2 Tanya did articles on day three is 1 - Total = 3 Tanya did articles on day four is 1 - Total = 4
Aquí, mediante el uso del mecanismo de llamada por nombre de la función en el programa anterior, se incrementará el recuento total de artículos.
Otro programa de función llamada por nombre.
Ejemplo :
// Scala program of function call-by-name // Creating object object GFG { // Main method def main(args: Array[String]) { def something() = { println("calling something") 1 // return value } // Defined function def callByName(x: => Int) = { println("x1=" + x) println("x2=" + x) } // Calling function callByName(something) } }
calling something x1=1 calling something x2=1
Publicación traducida automáticamente
Artículo escrito por ashishsaini3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA