{"id":233,"date":"2023-07-06T01:38:46","date_gmt":"2023-07-06T01:38:46","guid":{"rendered":"https:\/\/canessaalvamiguel.dev\/?p=233"},"modified":"2023-07-06T01:40:15","modified_gmt":"2023-07-06T01:40:15","slug":"fold-foldleft-and-foldright-in-scala","status":"publish","type":"post","link":"https:\/\/canessaalvamiguel.dev\/index.php\/2023\/07\/06\/fold-foldleft-and-foldright-in-scala\/","title":{"rendered":"fold, foldLeft and foldRight in Scala"},"content":{"rendered":"\n<p>En el desarrollo de software, a menudo nos encontramos con la necesidad de agregar o combinar elementos de una colecci\u00f3n en un solo resultado. En Scala, los m\u00e9todos fold, foldLeft y foldRight nos ofrecen una forma poderosa y expresiva de realizar este tipo de operaciones.<\/p>\n\n\n\n<p><strong>fold: Uniendo todos los elementos de una colecci\u00f3n<\/strong><\/p>\n\n\n\n<p>El m\u00e9todo fold se utiliza para combinar todos los elementos de una colecci\u00f3n en un solo resultado. Toma un valor inicial y una funci\u00f3n de combinaci\u00f3n como argumentos. La funci\u00f3n de combinaci\u00f3n toma dos par\u00e1metros, el acumulador y el elemento actual de la colecci\u00f3n, y produce un nuevo acumulador. El resultado final es el valor del acumulador al final de la iteraci\u00f3n.<\/p>\n\n\n\n<p>Ejemplo de uso de <code>fold<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nval numeros = List(1, 2, 3, 4, 5)\nval sumaTotal = numeros.fold(0)((acumulador, numero) =&gt; acumulador + numero)\nprintln(sumaTotal) \/\/ Output: 15\n<\/pre><\/div>\n\n\n<p>En este ejemplo, utilizamos el m\u00e9todo <code>fold<\/code> en la lista de n\u00fameros para sumar todos los elementos. El valor inicial es 0 y la funci\u00f3n de combinaci\u00f3n suma el acumulador actual con cada n\u00famero de la lista.<\/p>\n\n\n\n<p><strong>foldLeft: Agregaci\u00f3n de izquierda a derecha<\/strong><\/p>\n\n\n\n<p>El m\u00e9todo foldLeft se utiliza para realizar una agregaci\u00f3n de izquierda a derecha en una colecci\u00f3n. Toma un valor inicial y una funci\u00f3n de combinaci\u00f3n como argumentos. La funci\u00f3n de combinaci\u00f3n se aplica sucesivamente a cada elemento de la colecci\u00f3n, comenzando desde el valor inicial y avanzando hacia la derecha.<\/p>\n\n\n\n<p>Ejemplo de uso de <code>foldLeft<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nval palabras = List(&quot;Hola&quot;, &quot;a&quot;, &quot;todos&quot;)\nval resultado = \n     palabras.foldLeft(&quot;&quot;)((acumulador, palabra) =&gt; acumulador + &quot; &quot; + palabra)\nprintln(resultado) \/\/ Output: &quot; Hola a todos&quot;\n<\/pre><\/div>\n\n\n<p>En este ejemplo, utilizamos el m\u00e9todo <code>foldLeft<\/code> en la lista de palabras para concatenar todas las palabras en una sola cadena. El valor inicial es una cadena vac\u00eda y la funci\u00f3n de combinaci\u00f3n agrega un espacio en blanco y la palabra actual al acumulador.<\/p>\n\n\n\n<p><strong>foldRight: Agregaci\u00f3n de derecha a izquierda<\/strong><\/p>\n\n\n\n<p>El m\u00e9todo foldRight se utiliza para realizar una agregaci\u00f3n de derecha a izquierda en una colecci\u00f3n. Toma un valor inicial y una funci\u00f3n de combinaci\u00f3n como argumentos. La funci\u00f3n de combinaci\u00f3n se aplica sucesivamente a cada elemento de la colecci\u00f3n, comenzando desde el valor inicial y avanzando hacia la izquierda.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nval numeros = List(1, 2, 3)\nval resultado = numeros.foldRight(0)((numero, acumulador) =&gt; numero + acumulador)\nprintln(resultado) \/\/ Output: 6\n<\/pre><\/div>\n\n\n<p>En este ejemplo, utilizamos el m\u00e9todo <code>foldRight<\/code> en la lista de n\u00fameros para sumar todos los elementos en orden inverso. El valor inicial es 0 y la funci\u00f3n de combinaci\u00f3n suma el n\u00famero actual al acumulador.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones:<\/h2>\n\n\n\n<p>Los m\u00e9todos fold, foldLeft y foldRight en Scala nos proporcionan una forma elegante y poderosa de realizar operaciones de agregaci\u00f3n en colecciones. Estos m\u00e9todos nos permiten combinar elementos y producir un resultado final de manera sencilla y concisa. El m\u00e9todo fold se utiliza para unir todos los elementos de una colecci\u00f3n, mientras que foldLeft y foldRight permiten una agregaci\u00f3n de izquierda a derecha y de derecha a izquierda, respectivamente.<\/p>\n\n\n\n<p>Al aprovechar estos m\u00e9todos, podemos simplificar la l\u00f3gica de agregaci\u00f3n en nuestro c\u00f3digo y reducir la cantidad de bucles y variables auxiliares necesarias. Esto mejora la legibilidad, el mantenimiento y la claridad del c\u00f3digo.<\/p>\n\n\n\n<p>Es importante tener en cuenta que fold, foldLeft y foldRight son m\u00e9todos de orden superior que nos permiten expresar nuestras intenciones de manera declarativa. Esto se alinea con los principios de la programaci\u00f3n funcional y nos ayuda a escribir c\u00f3digo m\u00e1s conciso y f\u00e1cilmente comprensible.<\/p>\n\n\n\n<p>En resumen, el uso de fold, foldLeft y foldRight nos permite realizar operaciones de agregaci\u00f3n de manera m\u00e1s eficiente y elegante en Scala. Estos m\u00e9todos son herramientas poderosas en el kit de herramientas de un desarrollador senior de Scala y programador funcional, y su dominio ayuda a escribir c\u00f3digo m\u00e1s robusto y expresivo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el desarrollo de software, a menudo nos encontramos con la necesidad de agregar o combinar elementos de<\/p>\n","protected":false},"author":1,"featured_media":62,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[49,50,51,8],"class_list":["post-233","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scala","tag-fold","tag-foldleft","tag-foldright","tag-scala"],"_links":{"self":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/comments?post=233"}],"version-history":[{"count":3,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/233\/revisions"}],"predecessor-version":[{"id":236,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/233\/revisions\/236"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media\/62"}],"wp:attachment":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media?parent=233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/categories?post=233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/tags?post=233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}