La necesidad de hacer que todo sea conciso llevó a Scala a mostrar algo llamado sintaxis de marcador de posición . Scala permite el uso de guiones bajos (indicados como ‘_’) como marcadores de posición para uno o más parámetros. podemos considerar el guión bajo como algo que debe completarse con un valor. Sin embargo, cada parámetro debe aparecer solo una vez dentro del literal de la función.
Nota:Internamente, el guión bajo se expande a un literal para una función que toma la entrada como 1 parámetro y luego verifica la condición que se menciona. La misma regla se aplica para más de 1 parámetro. Múltiples guiones bajos significan múltiples parámetros y no el uso del mismo parámetro repetidamente. Por lo tanto, esta sintaxis se usa cuando desea tomar 1 o más parámetros solo una vez. Esta sintaxis no admite la reutilización.
Comprendamos la sintaxis del marcador de posición con la ayuda de un ejemplo.
Ejemplo 1:
Supongamos que queremos comprobar si el número es mayor que 5.
scala> someNumbers.filter(_ > 5)
En el ejemplo anterior, la condición se expande internamente como:
scala> someNumbers.filter(x=>x>5)
La variable x ha sido reemplazada por un guión bajo para que la función sea más concisa.
La sintaxis de marcador de posición también se puede utilizar para indicar más de un solo parámetro.
Ejemplo 2:
Supongamos que queremos sumar dos números. Si entendemos el ejemplo anterior, pensaríamos que la sintaxis normal para la suma de dos números debería ser:
scala> val f = _ + _
Cuando esto se pasa al compilador, da un error ya que no ha mencionado el ‘tipo’ de números que el compilador debe tomar como entrada.
val f = _ + _ ˆ error: missing parameter type for expanded function ((x$1, x$2) => x$1.$plus(x$2))
debemos mencionar el tipo de números que esperamos de la función. El tipo se puede pasar a la función con la ayuda de dos puntos (‘:’). Tenga en cuenta que internamente,
f = _ + _
se expande como
((x$1, x$2) => x$1.$plus(x$2)).
Ahora, la sintaxis de marcador de posición correcta para la suma de dos números usando una función es:
scala> val f = (_: Int) + (_: Int) f: (Int, Int) => Int = <function> //Input scala> f(15, 10) //Output res: Int = 25
Por lo tanto, al pasar más de un parámetro, asegúrese de especificar el tipo de variable que estamos pasando . Para que el compilador entienda qué tipo de entrada se espera que tome.
Ejemplo 3:
scala> r.map((x,y) => x + y / x min y)
En el ejemplo anterior, los parámetros se usaron más de una vez. necesitamos cuatro guiones bajos en ese caso. de acuerdo con la regla, el número de parámetros y el número de guiones bajos deben ser los mismos, por lo que no podemos usar la sintaxis de marcador de posición.
Publicación traducida automáticamente
Artículo escrito por Vijayalakshmi_Bhagat y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA