El 14 de septiembre de 2017, publicamos una versión revisada de nuestra Política de privacidad. Tu uso continuado de video2brain.com significa que aceptas este documento revisado, por lo que te recomendamos que dediques unos minutos a leerlo y comprenderlo.

Aprende Swift 3

Curring o funciones parciales

Prueba ahora LinkedIn Learning sin cargo y sin compromiso.

Prueba gratis Mostrar modalidades de suscripción
En esta versión de Swift realizaron un cambio a cómo expresamos el Curring o funciones parciales que son muy utilizadas en la programación funcional. Revisaremos cómo se pueden definir y utilizar en nuestros proyectos.

Transcripción

Si lo tuyo es la programación funcional y te gustaba mucho Swift porque tenía "Currying". déjame decirte que cambió la sintaxis. A mí me gustaba mucho la anterior pero creo que ahora ha mejorado mucho en cuanto a la claridad de la firma de los métodos. Si no sabes qué es "Currying", no te preocupes. El "Currying" es una técnica que tienen los lenguajes de programación para poder aplicar algo llamado "Funciones parciales". ¿Qué quiere decir? Es una función que se va llenando poco a poco con los parámetros que le vas dando. Un ejemplo muy rápido es, tienes una función que recibe dos parámetros, pero esa función regresa otra función que recibe otros tres parámetros entonces en total, para poder cumplir la función por completo tienes cinco parámetros; primero le das dos, te regresa un bloque y luego te da otros tres y te regresa el resultado. Eso es el Currying; lo puedes encontrar como funciones parciales y está habilitado en Swift. Ahora vamos a poner aquí el nombre de este "Playground" para poder decir en dónde estuvo el cambio, básicamente es un cambio de sintaxis así que no te preocupes. Vamos a guardarlo aquí en el escritorio. Esto de aquí no lo vamos a ocupar. Básicamente, antes, lo que tenías era una función – vamos a ponerle "cur" – que recibía un parámetro y regresaba un valor como por ejemplo, un flotante. Abríamos y cerrábamos y con esto ya podíamos indicar que era una función normal pero si queríamos agregarle la funcionalidad de Currying, lo que teníamos que hacer era decirle "Ok, antes de que regreses el valor final, en medio tienes que regresar otro parámetro" Que es, "y" y también puede ser otro tipo como un "string". Esto iba aquí. Así lo definías antes. ¿Qué es lo que tenías que hacer dentro de este método? Muy sencillo: Tenías que regresar el flotante del primero más el flotante del segundo. Esta es una manera de hacer "casting", así que no tenías ningún problema por estar haciendo estas uniones. ¿Cuál era la ventaja? Primero, podías aplicar "cur" con "x" y después agregarle la versión "y", pero si te fijas y si te pones a pensarlo un poco, es muy complicado saber que vas a tener "y" antes de poder resolver el bloque completo; tendrías que estar capturando "x" para después guardarlo y usarlo con "y", lo cual es prácticamente posible pero es muy difícil de mantener. ¿Cómo lo resolvieron en Swift 3? Vamos a comentar esto y a escribir la nueva sintaxis. Vamos a tener también nuestra función "cur". Vamos a poner que "x" es de tipo entero pero ahora sí este va a regresar un bloque que acepta otro parámetro de tipo "string", si te fijas aquí ya no tengo el parámetro nombrado. ¿Por qué? Porque esto ocupa o reutiliza las sintaxis de los "closures" y si te fijas en los "closures" de Swift ya no utilizamos parámetros nombrados. Aquí le digo que vamos a utilizar un "float" y ya estamos. Aquí tengo el nombre de mi método. Si lo revisamos, "cur" va a tomar un parámetro "x" y esto me va a regresar un bloque que va a tener como parámetro un "string" que a su vez regresa un flotante. Es como estar envolviendo simplemente los "closures". Ahora veamos cómo tengo que escribir el método para que regrese este "closure" como yo lo necesito. Simplemente escribo "return", abro llaves y aquí voy a escribir "Ok"; este bloque va a recibir un parámetro "y" que así es como lo voy a llamar de forma interna, que es de tipo "string". Voy a regresar un flotante y le voy a poner "end" para indicarle que este es el "closure". ¿Qué es lo que voy a hacer dentro de este "closure"? Muy sencillo: cumplir con la firma, tengo que regresar un flotante, pero aquí ya tengo el contexto de "x" y de "y", así que "return", "float" de "x", más el flotante de "y". Ahora, este opcional lo coloca porque puede ser que el flotante de "y", al ser un "string" no sea un valor de tipo flotante, así que nos devuelve un opcional. Le hacemos el "unwrap" y con eso está listo. ¿Cómo utilizar este "call"? Muy sencillo: "let" "Partial" "cur" y le pasamos el flotante en "x" en entero que va a ser "5". Y si te fijas, esto ya nos regresa un bloque que dice "recibo un 'string' y regreso un flotante". El final es simplemente "partial" y le paso en la cadena. ¿Qué cadena es válida? Una que sea compatible con el "casting" de "float". Así que le voy a poner "2", el resultado debería ser "7". Esta es una forma de hacerlo, la forma del Currying es "cur (x:5)" y aquí vuelvo a abrir y le paso el "2" y listo. Si te fijas, lo que estamos haciendo aquí es una función parcial y después le aplicamos la segunda parcialidad. De esta manera podemos indicar el Currying en Swift 3. Es muy importante que lo sepas si te gusta la programación funcional y poder hacer estas funciones parciales dentro de tus aplicaciones.

Aprende Swift 3

Descubre Swift 3, la versión más actual del lenguaje de Apple; conoce todas sus novedades y aprende el lenguaje de código abierto desde cero para desarrollar tus aplicaciones.

3:14 horas (31 Videos)
Actualmente no hay comentarios.
 
Fecha de publicación:22/03/2017
Duración:3:14 horas (31 Videos)

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.