{"id":33,"date":"2023-03-24T00:29:47","date_gmt":"2023-03-24T00:29:47","guid":{"rendered":"https:\/\/canessaalvamiguel.dev\/?p=33"},"modified":"2023-03-30T04:24:17","modified_gmt":"2023-03-30T04:24:17","slug":"using-scala-collect-function","status":"publish","type":"post","link":"https:\/\/canessaalvamiguel.dev\/index.php\/2023\/03\/24\/using-scala-collect-function\/","title":{"rendered":"Using Collect function in Scala"},"content":{"rendered":"\n<p>El m\u00e9todo <code>collect<\/code> en Scala es una funci\u00f3n de orden superior que se utiliza para filtrar y transformar elementos de una colecci\u00f3n en base a ciertas condiciones. Esta funci\u00f3n devuelve una nueva colecci\u00f3n que contiene s\u00f3lo aquellos elementos de la colecci\u00f3n original que satisfacen la condici\u00f3n especificada.<\/p>\n\n\n\n<p>La sintaxis b\u00e1sica de la funci\u00f3n <code>collect<\/code> es la siguiente:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\ndef collect&#x5B;B](pf: PartialFunction&#x5B;A, B]): Traversable&#x5B;B]\n<\/pre><\/div>\n\n\n<p>Aqu\u00ed, <code>pf<\/code> es una funci\u00f3n parcial que toma elementos de tipo <code>A<\/code> de la colecci\u00f3n original y devuelve elementos de tipo <code>B<\/code> para la nueva colecci\u00f3n. La funci\u00f3n <code>collect<\/code> aplica esta funci\u00f3n parcial a cada elemento de la colecci\u00f3n original y devuelve una nueva colecci\u00f3n de tipo <code>Traversable[B]<\/code>.<\/p>\n\n\n\n<p>Veamos algunos ejemplos para entender mejor el funcionamiento de <code>collect<\/code>.<\/p>\n\n\n\n<p><strong>Ejemplo 1: Filtrando y transformando una lista de n\u00fameros<\/strong><\/p>\n\n\n\n<p>Supongamos que tenemos una lista de n\u00fameros y queremos filtrar s\u00f3lo aquellos n\u00fameros que son pares y luego dividirlos por dos. Podemos hacer esto utilizando la funci\u00f3n <code>collect<\/code> de la siguiente manera:<\/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, 6, 7, 8, 9, 10)\nval nuevosNumeros = numeros.collect {\ncase x if x % 2 == 0 =&gt; x \/ 2\n}\nprintln(nuevosNumeros)\n<\/pre><\/div>\n\n\n<p>La salida de este programa ser\u00e1:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nList(1, 2, 3, 4, 5)\n<\/pre><\/div>\n\n\n<p>Aqu\u00ed, utilizamos la funci\u00f3n <code>collect<\/code> para aplicar una funci\u00f3n parcial que toma s\u00f3lo aquellos n\u00fameros que son pares (<code><em><strong>case x if x % 2 == 0<\/strong><\/em><\/code>) y los divide por dos (<code><strong>x \/ 2<\/strong><\/code>). La funci\u00f3n <code>collect<\/code> devuelve una nueva lista que contiene s\u00f3lo los n\u00fameros transformados que satisfacen la condici\u00f3n especificada.<\/p>\n\n\n\n<p><strong>Ejemplo 2: Filtrando y transformando un mapa de cadenas y enteros<\/strong><\/p>\n\n\n\n<p>Supongamos que tenemos un mapa que contiene nombres de personas y sus edades, y queremos filtrar s\u00f3lo aquellos nombres que comienzan con la letra &#8220;A&#8221; y luego duplicar sus edades. Podemos hacer esto utilizando la funci\u00f3n <code>collect<\/code> de la siguiente manera:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nval personas = Map(&quot;Alice&quot; -&gt; 25, &quot;Bob&quot; -&gt; 30, &quot;Charlie&quot; -&gt; 35, &quot;Anna&quot; -&gt; 40)\nval nuevasEdades = personas.collect {\n  case (nombre, edad) if nombre.startsWith(&quot;A&quot;) =&gt; edad * 2\n}\nprintln(nuevasEdades)\n<\/pre><\/div>\n\n\n<p>La salida de este programa ser\u00e1:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nList(50, 80)\n<\/pre><\/div>\n\n\n<p>Aqu\u00ed, utilizamos la funci\u00f3n <code>collect<\/code> para aplicar una funci\u00f3n parcial que toma s\u00f3lo aquellos pares clave-valor cuyas claves comienzan con la letra &#8220;A&#8221; (<code><strong><em>case (nombre, edad) if nombre.startsWith(\"A\")<\/em><\/strong><\/code>) y duplica sus valores (<code><strong><em>edad * 2<\/em><\/strong><\/code>). La funci\u00f3n <code>collect<\/code> devuelve una nueva lista que contiene s\u00f3lo las edades transformadas que satisfacen la condici\u00f3n especificada.<\/p>\n\n\n\n<p>En resumen, la funci\u00f3n <code>collect<\/code> en Scala es una herramienta \u00fatil para filtrar y transformar elementos de una colecci\u00f3n en base a ciertas condiciones. Con su uso, podemos crear nuevas colecciones que contengan s\u00f3lo aquellos elementos que satisfagan nuestras necesidades espec\u00edficas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El m\u00e9todo collect en Scala es una funci\u00f3n de orden superior que se utiliza para filtrar y transformar<\/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":[9,8],"class_list":["post-33","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scala","tag-collect","tag-scala"],"_links":{"self":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/33","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=33"}],"version-history":[{"count":19,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions"}],"predecessor-version":[{"id":110,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions\/110"}],"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=33"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/categories?post=33"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/tags?post=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}