En este tutorial aprenderemos sobre las funciones Reducir, Plegar y Escanear en Scala.
- Reducir: la función Reducir se aplica en la estructura de datos de colección en Scala que contiene listas, conjuntos, mapas, secuencias y tuplas. El parámetro en la función de reducción es una operación binaria que fusiona todos los elementos de la colección y devuelve un valor único. Los dos primeros valores se combinan con la operación binaria y la resultante de esa operación se combina con el siguiente valor de la colección y por fin obtenemos un solo valor.
Este código implementa la Suma de elementos en una secuencia usando la función de reducción.
Ejemplo :// Scala program sum of elements
// using reduce function
// Creating object
object
geeks
{
// Main method
def
main(arg
:
Array[String])
{
// initialize a sequence of elements
val
seq
_
elements
:
Seq[Double]
=
Seq(
3.5
,
5.0
,
1.5
)
println(s
"Elements = $seq_elements"
)
// find the sum of the elements
// using reduce function
val
sum
:
Double
=
seq
_
elements.reduce((a, b)
=>
a + b)
println(s
"Sum of elements = $sum"
)
}
}
Producción:
Elements = List(3.5, 5.0, 1.5) Sum of elements = 10.0
Este código encuentra el elemento máximo y mínimo en la secuencia usando la función de reducción
Ejemplo:// Scala program to find maximum and minimum
// using reduce function
// Creating object
object
geeks
{
// Main method
def
main(arg
:
Array[String])
{
// initialize a sequence of elements
val
seq
_
elements
:
Seq[Double]
=
Seq(
3.5
,
5.0
,
1.5
)
println(s
"Elements = $seq_elements"
)
// find the maximum element using reduce function
val
maximum
:
Double
=
seq
_
elements.reduce(
_
max
_
)
println(s
"Maximum element = $maximum"
)
// find the minimum element using reduce function
val
minimum
:
Double
=
seq
_
elements.reduce(
_
min
_
)
println(s
"Minimum element = $minimum"
)
}
}
Producción:
Elements = List(3.5, 5.0, 1.5) Maximum element = 5.0 Minimum element = 1.5
- Fold: Al igual que reduce fold, también realiza una operación binaria que fusiona todos los elementos de la colección y devuelve un solo valor. La diferencia es que fold nos permite definir un valor inicial. Debido a esta propiedad, fold también puede administrar colecciones vacías. Si la colección está vacía, el valor inicializado se convierte en la respuesta final. Debido a esto, también podemos devolver un valor diferente del conjunto de colección utilizando el valor inicial de algún otro tipo de datos. Reduce solo puede devolver el valor del mismo tipo porque su valor inicial es el primer valor de la colección.
Este código implementa la Suma de elementos en una secuencia usando la función de plegado. Aquí el valor inicial se toma como 0.0 ya que la secuencia está en el tipo de datos Doble.
Ejemplo :// Scala program sum of elements
// using fold function
// Creating object
object
geeks
{
// Main method
def
main(arg
:
Array[String])
{
// initialize a sequence of elements
val
seq
_
elements
:
Seq[Double]
=
Seq(
3.5
,
5.0
,
1.5
)
println(s
"Elements = $seq_elements"
)
// find the sum of the elements using fold function
val
sum
:
Double
=
seq
_
elements.fold(
0.0
)((a, b)
=>
a + b)
println(s
"Sum of elements = $sum"
)
}
}
Producción:
Elements = List(3.5, 5.0, 1.5) Sum of elements = 10.0
Este código concatena las strings con guión. Usamos el valor inicial como string vacía. Por lo tanto, nuestro método de plegado aplicará el operador en una string vacía, mientras que con reduce no obtendríamos el guión antes del primer valor de la colección.
Ejemplo :// Scala program concatenate string
// using fold function
// Creating object
object
geeks
{
// Main method
def
main(arg
:
Array[String])
{
// initialize a sequence of strings
val
str
_
elements
:
Seq[String]
=
Seq(
"hello"
,
"Geeks"
,
"For"
,
"Geeks"
)
println(s
"Elements = $str_elements"
)
// Concatenate strings with fold function
val
concat
:
String
=
str
_
elements.fold(
""
)(
(a, b)
=>
a +
"-"
+ b)
println(s
"After concatenation = $concat"
)
}
}
Producción:
Elements = List(hello, Geeks, For, Geeks) After concatenation = -hello-Geeks-For-Geeks
- Escaneo: la función de escaneo toma la operación binaria como parámetro y devuelve el valor de cada elemento de la colección para esa operación. Devuelve cada iteración para ese operador binario en la colección. En scan también podemos definir el valor inicial.
Este código implementa iteraciones de la suma de todos los elementos usando la función de escaneo.
Ejemplo :// Scala program sum of elements
// using scan function
// Creating object
object
geeks
{
// Main method
def
main(arg
:
Array[String])
{
//initialize a sequence of numbers
val
numbers
:
Seq[Int]
=
Seq(
4
,
2
,
1
,
6
,
9
)
println(s
"Elements of numbers = $numbers"
)
//find the sum of the elements using scan function
val
iterations
:
Seq[Int]
=
numbers.scan(
0
)(
_
+
_
)
println(
"Running total of all elements"
+
s
"in the collection = $iterations"
)
}
}
Producción:
Elements of numbers = List(4, 2, 1, 6, 9) Running total of all elements in the collection = List(0, 4, 6, 7, 13, 22)
Esta es la implementación de la concatenación de strings con guión y muestra las iteraciones.
Ejemplo :// Scala program concatenate string
// using scan function
// Creating object
object
geeks
{
// Main method
def
main(arg
:
Array[String])
{
// initialize a sequence of strings
val
str
_
elements
:
Seq[String]
=
Seq(
"hello"
,
"Geeks"
,
"For"
,
"Geeks"
)
println(s
"Elements = $str_elements"
)
// Concatenate strings with scan function
val
concat
:
Seq[String]
=
str
_
elements.scan(
""
)((a, b)
=>
a +
"-"
+ b)
println(s
"After concatenation = $concat"
)
}
}
Producción:
Elementos = Lista (hola, Geeks, Para, Geeks)
Después de la concatenación = Lista (, -hola, -hola-Geeks, -hola-Geeks-Para, -hola-Geeks-Para-Geeks)
Publicación traducida automáticamente
Artículo escrito por aakarsha_chugh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA