Las formas recursivas tienen su definición en términos de sí mismas, como si tuviéramos subcarpetas en carpetas que además pueden tener subcarpetas. Los métodos recursivos que se llaman a sí mismos también son una forma recursiva. Se pueden usar formularios similares para crear una secuencia recursiva.
Ejemplo 1: Creación de una lista perezosa
// Scala program for resursive stream // creating object object Geeks { // Main method def main(args: Array[String]) { // second con can be recursive lazy val geek = Stream.cons(1, Stream.cons(5, Stream.empty)) println (geek) (geek take 4) foreach { x => println(x) } } }
Producción :
Stream(1, ?) 1 5
En el código anterior, la segunda estafa puede ser recursiva.
Ejemplo 2: Cree una lista perezosa colocando una llamada recursiva al método
// Scala program for resursive stream // creating object object Geeks { // Main method def main(args: Array[String]) { // con can be recursive def geek(n: Int): Stream[Int] = Stream.cons(n, geek(n+1)) // Creating lazy val lazy val q = geek(5) println(q) } }
Producción :
Stream(5, ?)
Ejemplo 3: cree una lista perezosa colocando una llamada recursiva al método de manera breve y clara
// Scala program for resursive stream // creating object object Geeks { // Main method def main(args: Array[String]) { // recursive stream def geek(n: Int):Stream[Int] = n #:: geek(n+1) // Lazy value lazy val q = geek(5) println(q) } }
Producción :
Stream(5, ?)
Colecciones de corrientes
Las colecciones de flujo en Scala son muy importantes, ya que permiten que no sea necesario eliminarlas explícitamente. Declarativamente, las cosas se pueden realizar utilizando combinadores funcionales como map, filter y flatMap. Los flujos son colecciones perdidas perezosas.
Ejemplo 4:
// Scala program for stream collection // creating object object Geeks { // Main method def main(args: Array[String]) { // creating Stream def geek(n: Int):Stream[Int] = n #:: geek(n+1) lazy val g = geek(0) println (g) println (g.take(10).mkString(" ; ")) } }
Producción :
Stream(0, ?) 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9)
Ejemplo 5: Usar filtro
// Scala program for filter list // creating object object Geeks { // Main method def main(args: Array[String]) { // Creating list val geek = List(1, 2, 3, 4) // Using filter val abc = geek filter { x => x > 2 } println(abc) } }
Producción :
List(3, 4)
filter se llama sobre la lista geek. Toma función como argumento y devuelve un valor booleano, que es un predicado de función. Cada elemento se ejecuta a través de la función y los elementos se filtran cuando la función devuelve falso. Da como resultado una nueva lista y la lista «geek» original permanece persistente.
Ejemplo 6: Usar el filtro de una manera mucho más concisa
// Scala program for collection // creating object object Geeks { // Main method def main(args: Array[String]) { // Creating list val geek = List(1, 2, 3, 4) // Filter list val abc = geek filter { _ > 2 } println(abc) } }
Producción :
List(3, 4)
En el código anterior, no es necesario nombrar el elemento. El elemento es referido por una forma más corta a través de a_. Además, no hay necesidad de calificar la llamada al método.
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA