CategoriasSin categoria

Nueva charla disponible: Como usar Kotlin DSL para darle superpoderes a tu proyecto de Android.

¡Hola! En octubre tuve la oportunidad de dar una charla en el Android Developer Group de Madrid, sobre cómo utilizar Kotlin DSL para mejorar tu proyecto con Gradle. En este hablé sobre cómo puedes migrar código en Groovy a Kotlin en tus archivos de Gradle y así darle superpoderes al manejo de tu proyecto.

Tambien hablo sobre algunos plugins de Gradle que con Kolin DSL hacen cosas super interesantes. La charla la puedes ver aquí:

Enlace al vídeo de la charla

Este es el enlace al video de todo el evento.

Aprovecho de recordarte, que tenemos nuevo canal de Twitch en el que hablamos de programación y hacemos sesiones de live coding. Te dejo mas información en este enlace.

CategoriasSin categoria

Nuevo canal de Twitch

¡Hola! Quería comentar que desde hace par de semanas he creado un nuevo canal en Twitch en el que tenemos charlas sobre Kotlin y Android. Últimamente estamos también con el LiveCoding de aplicaciones.

Así que si te interesa el mundo del streaming puedes pasarte por allí, también si te pasas por el streaming puedes solicitar unirte a nuestro Discord. Donde tenemos una pequeña comunidad para ayudarnos entre los desarrolladores.

El enlace al canal es este twitch.tv/codingpizza.

Tambíen comentarte que hemos estado creando contenidos para Instagram, unos pequeños carruseles de información sobre Kotlin que siempre son buenos de tener bajo el brazo. El usuario de instagram de codingpizza en instagram, es: instagram.com/codingpizza

Les dejo un ejemplo:

Carousel-1
Carousel-1
Carousel-1

¡Nos vemos por allá!

CategoriasSin categoria

Mi experiencia usando Platzi

Hace poco mas de un año se realizó una conferencia de Platzi en Madrid, donde actualmente vivo. Me pareció interesante el contenido de la charla y fui a verla con mi novia, yo ya había escuchado de Platzi cuando vivía en Venezuela ya que recuerdo cuando un estudiante de la universidad donde yo me gradué fue contratado para ir a Colombia, donde tienen una de sus oficinas.

Freddy Vega dando una charla

¿Qué es Platzi?

Platzi es educación online efectiva, donde sus estudiantes tienen un completion rate del 70% o superior.

Seguramente pensaras que habré buscando en Google esa frase, pero no. Su CEO, Freddy Vega, lo repite tanto que se queda grabada en tu cabeza, además el equipo de marketing es increíble.

Disfruté mucho la charla y al final comentaron que estaban buscando profesores para dar cursos en su plataforma. A mi que siempre me ha gustado compartir las cosas que aprendo me pareció una idea increible y me acerqué a Christian Van der herst, uno de los cofundadores de Platzi, para preguntarle como podría postularme. Él muy amablemente me dió su correo y me pidió que le enviara un mail, al día siguiente ya tenia un correo mío en su bandeja de entrada.

Me piden que haga un video de una clase para ver qué tal es mi contenido y yo encantado, lo hago y lo envio. En ese proceso de crear el video me di cuenta de lo complejo que puede llegar a ser crear un curso de buena calidad, ya que transmitir el conocimiento de forma efectiva y organizada requiere muchos elementos que no había tomado en cuenta, tener el conocimiento no fue suficiente y no fui seleccionado.

En otros sitios probablemente me habrían dicho «muchas gracías, no nos llame mas». Pero en Platzi me dieron feedback, me explicaron que aunque demostraba tener mucho conocimiento debía mejorar en ciertos aspectos y hasta se tomaron el tiempo de recomendarme videos que explicaban como mejorarlos.

Hay cosas que no sabes que no sabes

Un profesor de matemática en mi universidad siempre repetía la famosa frase «Yo solo se que no se nada». Y nunca me había quedado tan claro como en esa oportunidad, así que decidí subscribirme a Platzi y descubrir lo que no sabía. Por menos de un euro al día pague la subscripción anual, fueron aproximadamente 240 euros porque en ese momento había una promoción.

Llevo trabajando como desarrollador Android un poco mas de 4 años y luego de haber trabajado en proyectos de consultoría y productos propios de una empresa, conozco lo que se usa en el mundillo de Android. Así que empece con esto en Platzi a ver que podía agregar a mis habilidades de desarrollador Android.

Esto sería aproximadamente en principios del 2019. Aunque tenían un gran abanico de cursos de frontend y backend, en Android estaban un poco limitados y anticuados respecto al estado del mercado para ese momento. Los cursos usaban componentes casi deprecados, y no utilizaban todavía Kotlin en los cursos de Android. Si bien es cierto que ya tenían un curso de Kotlin específicamente, no lo usaban en los cursos de Android.

Al pasar los meses fueron agregando más cursos en los que sí empezaron a utilizar Kotlin, ConstraintLayouts y patrones de diseño. Si quieres empezar a programar en Android estos son los cursos que yo te recomendaría:

Y esta es la lista de cursos que considero que hacen falta en Platzi sobre android:

  • Curso de Inyección de dependencias con Dagger2.
  • Curso de inyección de dependencias con Koin.
  • Curso de RxJava/RxKotlin en Android.
  • Curso de Apps multimodulos en Android.
  • Curso de Architecture Components en Android. (Ya tienen un curso en el que hablan de Room, LiveData y Navigation Component, pero uno más a fondo de estos tres e incluir WorkManager estaría genial)
  • Curso de Testing en Android Con Mockito o MockK.
  • Curso de Animaciones en Android.

Y estoy esperando en un futuro para cuando este estable el curso de Jetpack Compose 😉.

El verdadero poder de Platzi

Si no sabes a dónde vas, cualquier camino te llevará.

En Platzi tienen el concepto de Rutas, estas rutas no son mas que un conjunto de cursos que debes tomar para llegar a cierto objetivo. Si tu estas empezando a obtener una habilidad de la que no conoces nada, no sabrás por donde empezar. A mi siempre me ha gustado crear cosas y aprender de todo un poco así que he tengo varias rutas en las que voy avanzando poco a poco y hasta ahora he completado 15 cursos.

Cursos completados en Platzi

Mis favoritos han sido:

  1. Curso de Finanzas Personales. Tema que considero deberían enseñar en todas las escuelas.
  2. Curso de Oratoria y hablar en publico. Te ayuda a entender, entre muchas cosas, que no sabemos hacer diapositivas 😂.
  3. Los cursos de Instagram. Si te gusta el tema de redes sociales, estos son increíbles.

Podrás ver en la imágen que algunos cursos tienen una fecha al lado de su nombre, y es porque todos los meses Platzi va sacando cursos nuevos y va actualizando constantemente su contenido. Tambien tengo muchos cursos que he terminado pero no he hecho el examen final del curso 😅.

Otras cosas interesantes de Platzi son sus podcast y una emisión en vivo que hacen los jueves llamada Platzi live, dónde hablan de temas muy interesantes, definitivamente recomendados.

¿Vale la pena?

Para mi, sí. Sobre todo si quieres aprender de temas de los que no conoces y no sabes por dónde empezar. Yo he aprovechado una oferta y he sumado a mi subscripción otro año. Este año quiero terminar la ruta de creación de video 😉. Y si quieres que te regalen un mes gratis, puedes adquirir la subscripción con mi enlace de referidos y así nos dan a ambos un mes gratis.😁

Solo tienes que hacer click aquí.

Eso es todo por ahora y como dice el equipo de Platzi, nunca pares de aprender.

CategoriasDartProgramación

Funciones increibles que debes conocer al trabajar con Dart

Funciones increibles que debes conocer al trabajar con Dart

En los post anteriores sobre Dart, hablamos sobre las Collections. Hablamos sobre Lists,Maps y sets. Y en esta oportunidad vamos a hablar sobre funciones asombrosas y que nos pueden ayudar en muchos casos.

Nota:En este post usamos varios elementos que probablemente quieras repasar, como las funciones anónimas. Si es tu primera vez leyendo esta serie de artículos puedes aquí debajo te dejo el link para que leas sobre funciones en Dart.

Funciones en Dart

Map

The map function exists in many programming languages, and Dart is not an exception. This function creates a new list after transform every element of the previous list. This function takes as a parameter an anonymous function. Let’s see an example.

var list = List.of({1,2,3,4});
var mappedList = list.map( (number) => number *2);
print(mappedList);

Esta función existe en muchos lenguajes de programación y dart no es la excepción. Esta función crea una nueva lista después de transformar cada elemento de la lista anterior. Esta función recibe como parámetro una función anónima. Veamos un ejemplo.

En este ejemplo, hemos creado una función anónima que tiene un número como parámetro y hemos multiplicado este número por dos. El resultado de la función es
(2,4,6,8).

Sort

Muchas veces necesitamos recibir una lista desde el servidor y mostrarla al usuario. Pero ¿qué ocurre si necesitamos aplicar algunos filtros y ordenarla de forma ascendente? Esta función está aquí para ayudarnos con eso, veamos un ejemplo.

var randomNumbers = List.of({14, 51, 23, 45, 6, 3, 22, 1});
randomNumbers.sort();
print(randomNumbers);

El resultado es el siguiente.

[1, 3, 6, 14, 22, 23, 45, 51]

Generate

La función generate es genial cuando necesitas crear una lista de números para hacer una prueba rápida. Toma como parámetro un número el cual indica el tamaño de la lista y una función anónima.

var generatedList = List.generate(10, (number) => number * Random().nextInt(50));
  print(generatedList);

Dentro de la función anónima obtenemos un número y lo multiplicamos por un número aleatorio entre 0 y 50.

Take

Ya solo con su nombre en inglés te explica que hace esta función simplemente toma los primeros elementos de la lista. Puede ser útil cuando tengas una lista de competidores y quieras solo obtener el top tres de todos los competidores.

var list = List.from([1,2,3,4,5,6]);
var topThreeList = list.take(3);
print(topThreeList);

El resultado es: 1,2,3

Skip

Esta función es el opuesto de la función Take, está ignora la cantidad de elementos que se le indique. En caso de que se le indiquen 3 elementos obviara los primeros tres elementos de la lista.

var list = List.from([1,2,3,4,5,6]);
var skipList = list.skip(3);
print(skipList);

El resultado es: 4,5,6

Where

Esta función es una de mis favoritas ya que nos ayuda a crear una lista con los elementos que cumplan con el predicado que se le pasa como parámetro. Esto quiere decir que solo los elementos que cumplan con la condición dada se agregaran a la lista.

Digamos que tenemos una lista aleatoria de números en caso de que queramos una lista con solo numeros pares bastará realizar esa comprobación en la función anónima. Veamos el siguiente ejemplo.

var randomNumbers = List.of({14, 51, 23, 45, 6, 3, 22, 1});
var evenNumbers = randomNumbers.where((number => number.isEven));
print(evenNumbers);

El resultado del ejemplo anterior es el siguiente:
14,6,22.

Un buen tip

Estas funciones pueden combinarse para lograr una mejor solución. Puedes combinar la función where con la función sort para obtener los números pares ordenados de forma ascendente por ejemplo.

var randomNumbers = List.of({14, 51, 23, 45, 6, 3, 22, 1});
var evenNumbers = randomNumbers.where((number) => number.isEven);
evenNumbers = evenNumbers.toList()..sort();
print(evenNumbers);

En este ejemplo tomamos solamente los números pares de la lista randomNumberList, luego convertimos esos números a una Lista y finalmente usamos el operador de cascada .. para ordenar la lista de forma ascendente.

El resultado final es: [6, 14, 22]

Eso es todo

Espero que te haya gustado. Estoy creando nuevas CodingSlices sobre Flutter en Instagram, puedes seguirme en @codingpizza y en Twitter como @coding__pizza para aprender sobre Flutter.

Ahora es tu turno

Puedes probar estos conceptos en Entornos de desarrollo (IDE) como Intellij Idea Community, que es gratis e instalar el plugin de Dart, si te gusta Visual Studio Code tambien puedes probar estos conceptos en él y por último, si prefieres algo online puedes utilizar Dartpad.

¿Quieres saber más sobre Dart?

Si te ha gustado este post y estás interesado en aprender Dart, actualmente estoy escribiendo más artículos como este en un ebook, el cual es un curso básico de Dart que te ayudará a tener un buen conocimiento que luego podrás utilizar para empezar con Flutter ;). Puedes darte de alta en este link ya que el ebook será totalmente gratis.

Post anterior

Si estás interesado en más post como este puedesrevisar mis otros artículos sobre Dart.

CategoriasDart

Collections en Dart

¡Hola! Esta semana vamos a hablar sobre Collections. Las Collections son muy importantes en la mayoría de proyectos en los que trabajamos. Como siempre, empecemos hablando sobre qué son la Collections.

Las Collections son objetos que agrupan múltiples elementos dentro de ellos, un objeto List por ejemplo pertenece a los Collections.

Digamos que tenemos una lista de números de lotería. Si creamos una lista con estos numeros se veria así.

var lotteryNumbers = List.of({18,23,43,65});

Esta variable llamada lotteryNumbers es una lista. Y esta pertenece a las Collections.

En Dart, podemos crear una lista de diferentes maneras.

Usando la palabra reservada var

Usando la palabra reservada var y el nombre de la lista crea una variable vacía.

var myVarList;

Null VS Initialized

Existe una diferencia entre una lista nula y una lista vacía. Hace poco me he encontrado una imagen que lo explica muy bien.

Una lista vacia es cuando la lista ha sido creada pero no hay ningún elemento en ella, una lista es null cuando no ha sido inicializada. Por supuesto existen otras formas más complejas de explicar esto, pero no viene al caso en este momento.

Podemos crear una lista de ambas maneras, la primera forma creará una lista nula y la segunda creará una lista vacía.

List nullList;
List emptyList = [];

Si eres curioso, puedes intentar imprimir el tamaño de cada lista usando la propiedad .length y comparar los resultados.

Creando una lista para un tipo específico

En caso de que necesitemos crear una lista de un objeto específico, necesitamos especificarlo después de la lista de la siguiente manera.

List<String> colorList = ["Red,Yellow,Purple"];

En este ejemplo estamos creando una lista de solo objetos Strings.

En caso de que necesitemos crear una lista de varios tipos de objetos necesitamos utilizar la palabra reservada dynamic.

List<dynamic> dynamicList = ["Red",1]

Por último también podemos crear una lista utilizando la función List.of.

List numberList = List.of({1,2,3,4});

Obteniendo elementos de una lista

En caso de que quieras obtener un elemento de una lista, existen varias formas de hacerlo.

  • Utilizando los corchetes luego del nombre de la lista colocando dentro la posición del objeto que quieres obtener.
  • Utilizando la función .elementAt(posición).

Aquí hay un ejemplo.

List numberList = List.of({1,2,3,4,5});
var firstNumber = numberList[0];
var elementAt = numberList.elementAt(0);

El resultado de este ejemplo va a ser el primer elemento de nuestra lista, en nuestro caso el número 1.

Agregando un elemento a la lista

Ahora vamos a ver cómo agregar un elemento a la lista que ya ha sido previamente creada. Todo lo que tenemos que hacer es usar la función .add y pasar como parámetro el número que queremos agregar.

List numberList = List.of({1,2,3,4,5});
var newNumber = 6;
numberList.add(newNumber);
print(numberList);
// Result: [1,2,3,4,5,6]

Eliminando un elemento de la lista

Esta vez vamos a hacer lo contrario, vamos a remover un elemento de la lista. Para esto necesitamos tener la posición del objeto en la lista y utilizar la función .removeAt().

List numberList = List.of({1,2,3,4,5});
numberList.removeAt(1)

¿Cuál número crees que hemos eliminado de la lista? Si tu respuesta fue el número 1, estabas cerca, pero es incorrecto, hemos removido el número 2. Esto se debe a que las posiciones de las listas empiezan desde 0.

Value  -> [1,2,3,4,5]
Position->[0,1,2,3,4]

Otro objeto de Collections

Presentamos los Maps, estos son una colección de clave-valor que nos ayudan a asociar una clave a un valor. Para crear los mapas hay que especificar el tipo de objeto de la clave y del valor, haciéndolo de la siguiente forma.

Map<int,String> nullMap;
//or
Map<String,String> powerRangersMap = {"red": "Tyrannosaurus","blue":"Triceratops","pink":"pterodactyl"};

Después de esta referencia de los noventas, podemos ver como cada Power Ranger tiene un dinosaurio asociado.

Obteniendo un elemento de un map

En ciertas ocasiones vamos a necesitar llamar solo a uno de nuestros Zords ¿no? Pero, ¿cómo podemos hacerlo en un Map? Para hacerlo necesitamos utilizar su clave en lugar de la posición.

Ejemplo:

var powerRanger = powerRangerMap["red"];

Para eliminar un elemento del Map

En caso de que necesitemos remover un elemento del Map lo que debemos hacer es utilizar la función .remove() pasando como parámetro la clave del elemento que queremos eliminar.

Ejemplo:

Map<String,String> powerRangersMap = {"red": "Tyrannosaurus","blue":"Triceratops","pink":"pterodactyl"};
powerRangersMap.remove("red");

Cómo agregar un elemento al Map

Ha aparecido un nuevo Ranger y queremos agregarlo a nuestro grupo creado previamente. Para esto debemos crear un Map, luego asignar una clave y un valor a nuestro nuevo mapa y por último debemos utilizar la función .addAll() para agregar al nuevo Ranger al grupo existente.

Ejemplo:

var newRanger = Map<String,String>();
newRanger["yellow"] = "Sabertooth Tiger";
powerRangersMap.addAll(newRanger);

Por último pero no menos importante

Hasta el momento hemos hablado de Collections sin mencionar los Sets. Un Set es una Collection de elementos únicos. Existen dos cosas que vale la pena mencionar sobre los sets

  1. No puedes obtener elementos de el Set utilizando la posición del elemento.
  1. Si intentas agregar un segundo elemento igual a uno ya existente no tendrá ningún efecto.

Ejemplo:

Set colorSet = Set.from(["Red","Blue","Yellow","Black","Pink"]);

Eliminando elementos del set

Para eliminar un elemento del Set debemos utilizar la función .remove() e indicar el elemento a eliminar.

colorSet.remove("Red");

Agregando un elemento a un set

Para agregar un elemento a un set todo lo que debemos hacer es utilizar la función .add() y pasarle el parámetro que queremos agregar.

colorSet.add("White");

Como he mencionado anteriormente si intentas agregar otro elemento al set que contenga el mismo valor, no surtirá ningún efecto.

Eso es todo

Si eres nuevo programando, espero que esto te pueda ayudar y si no lo eres, espero que te haya gustado. También estoy creando nuevas CodingSlices sobre Flutter en Instagram, puedes seguirme como @codingpizza y en Twitter como @coding__pizza para ver mas contenido.

Ahora es tu turno

Puedes probar estos conceptos en Entornos de desarrollo (IDE) como Intellij Idea Community, que es gratis e instalar el plugin de Dart, si te gusta Visual Studio Code tambien puedes probar estos conceptos en él y por último, si prefieres algo online puedes utilizar Dartpad.

Post anterior

Si estás interesado en más post como este puedes revisar mis otros artículos sobre Dart.

¿Quieres saber más sobre Dart?

Si te ha gustado este post y estás interesado en aprender Dart, actualmente estoy escribiendo más artículos como este en un ebook, el cual es un curso básico de Dart que te ayudará a tener un buen conocimiento que luego podrás utilizar para empezar con Flutter ;). Puedes darte de alta en este link ya que el ebook será totalmente gratis.

CategoriasDart

Flujo de control en Dart

Flujo de control en Dart

Hola!, en el último mes he estado escribiendo sobre Dart y cómo funcionan las cosas en este lenguaje. Si eres nuevo por acá puedes revisar mis otros post sobre Dart. Dejaré los enlaces acá debajo.

El poder sin control es inútil

En este post, vamos a hablar sobre cómo funciona el Control Flow (Flujo de control) en Dart. Empecemos hablando de que es el flujo de control. En palabras simples es el orden en el cual tu código es ejecutado.

Digamos que tenemos que elegir entre salir a la calle con un paraguas o no. Revisamos nuestra app del clima y si dice que va a llover nos llevamos un paraguas de lo contrario lo podemos dejar en casa.

Si quisiéramos escribir eso en código seria así:

if (isGoingToRainToday()) {
 takeUmbrella() 
} else {
 print ("What a great weather today 🌞")
}

If statements

Los If ayudan a nuestro código a tomar una decisión y tienen la siguiente sintaxis.

if (condition) {
 doThis()
} else {
 doAnotherThing()
}

Empezamos con la palabra reservada if, luego agregamos una condición dentro del paréntesis. Si esa condición se cumple el código dentro de las primeras llaves se ejecutará. De lo contrario, el código dentro de las llaves del else será ejecutado. La condición al final termina siendo una variable boolean.

Un dato para tener en cuenta es que el else no es siempre necesario, si solo necesitas ejecutar lo que está dentro del if puedes evitarlo.

En caso de que necesites hacer una comparación con mas de dos opciones puedes usar un else if. Veamos como funciona.

var flavor = "Vanilla";
if (flavor == "Vanilla"){
	print("Here's your vanilla ice cream");
} else if( flavor == "Chocolate") {
	print("Here's your chocolate ice cream");
} else {
	print("Since we don't know your favorite flavor, here's a random one");
}

En este ejemplo tenemos un sabor favorito de helado el cual es Vanilla. El If va a revisar si el sabor es vanilla en caso de que lo sea ejecutará el código dentro del if. Si el sabor es igual a chocolate ejecutara lo que
está dentro del else if, en caso de que no cumpla ninguna de las dos condiciones mencionadas ejecutara el código dentro del else.

¿Pero qué ocurre cuando tenemos muchos sabores?

Presentamos el Switch case

Los Switch Case funcionan con variables en vez de funcionar con una condición. El Switch va caso por caso comparando la variable con el valor del case y en caso de que sean iguales el código dentro del case será ejecutado.

Aquí podemos ver un ejemplo.

var flavor = "Vanilla"
switch (flavor) {
	case "Vanilla":
		print("Here's your vanilla ice cream");
	case "Chocolate":
		print("Here's your chocolate ice cream");
	case "Orange":
		print("Here's your orange ice cream");
	default:
		print("Since we don't know your favorite flavor, here's a random one");
}

For

El bucle For es una instrucción común que se puede encontrar en casi todos los lenguajes. Se utiliza para ejecutar un código una limitadacantidad de veces. Su sintaxis en dart es la siguiente:

for (var i = 0; i < list.length; i++){
 print(list[i]);
}

El bucle For puede parecer confuso pero vamos a separarlo en partes. La variable i empieza en el valor 0 y está variable incrementa una por uno hasta que es menor por 1 al tamaño de la lista.

Por cada ciclo que realiza el bucle, el código dentro del for es ejecutado. En nuestro caso imprimirá el elemento i de la lista.

While

El bucle While se ejecuta mientras una condición se cumpla, por ejemplo.

int laps = 0;
while (laps < 5){
	print("Laps $laps");
	laps++;
}

En este ejemplo, el código dentro del while es ejecutado hasta que la variable laps (vueltas) es menor que cinco.

Laps 0
Laps 1
Laps 2
Laps 3
Laps 4

El hermano del While

El hermano del bucle While es el Do While. Este bucle al contrario de su hermano ejecuta el código y luego evalúa la condición. Aquí tenemos un ejemplo.

int countDown = 5;
do {
 print("Time remaining: $countDown");
 countDown--;
} while (countDown != 0);

Este ejemplo imprime la variable countDown mientras sea diferente de cero.

Time remaining: 5
Time remaining: 4
Time remaining: 3
Time remaining: 2
Time remaining: 1

Eso es todo

Si eres nuevo programando, espero que esto te pueda ayudar y si no lo eres, espero que te haya gustado. También estoy creando nuevas CodingSlices sobre Flutter en Instagram, puedes seguirme como @codingpizza y en Twitter como @coding__pizza para ver mas contenido.

En caso de que no lo sepas, estoy escribiendo un eBook sobre un curso básico de Dart necesario para aprender Flutter. Es gratis y puedes registrarte en este link.

Ahora es tu turno

Puedes probar estos conceptos en Entornos de desarrollo (IDE) como Intellij Idea Community, que es gratis e instalar el plugin de Dart, si te gusta Visual Studio Code tambien puedes probar estos conceptos en él y por último si prefieres algo online, puedes utilizar Dartpad.

Post anterior

Si estás interesado en más post como este puedes revisar mis otros artículos sobre Dart.

¿Quieres saber mas sobré Dart?

Si te ha gustado este post y estás interesado en aprender Dart, actualmente estoy escribiendo más artículos como este en un ebook, el cual es un curso básico de Dart que te ayudará a tener un buen conocimiento que luego podrás utilizar para empezar con Flutter ;). Puedes darte de alta en este link ya que el ebook será totalmente gratis.

 

CategoriasDartProgramación

Parámetros en Dart

¡Hola!, en los ultimos post he hablado sobre variables y funciones. Si te los has perdido, te dejo el link a ellos aqui debajo para que puedas echarle un ojo.

Ya hemos hablado un poco sobre ellos.

En el post anterior sobre funciones ya hablamos un poco sobre los parámetros. Hemos visto que funcionaban como ingredientes para hacer funcionar una «Maquina de Helado». Tambien podemos decir que los parámetros son dependencias que una función requiere para poder ejecutar su codigo.

Required parameters (Parámetros requeridos)

Los parámetros requeridos son los mas basicos que una función puede usar, solo hace falta especificar un tipo un nombre y hemos terminado.

Los parámetros requeridos los hemos visto ya en el caso de la función suma.

Integer suma(Integer a,Integer b) {
    return a+b;
}

El entero a y el entero b, son usados dentro de la función y posteriormente la función devuelve el valor de los dos sumados.

Optional parameters / Parámetros opcionales

Los parámetros opcionales no son requeridos por la función al momento de usarla. En ciertos casos podrías necesitar pasarle ese parámetro a la función, como en otros no.

Para hacer un parámetro opcional es necesario colocarlo al final de la firma de la función y entre corchetes. Para dejarlo mas claro veamos el siguiente ejemplo:

void imprimirNombreCompleto(String nombre, String apellido, [String segundoNombre]){
    print("Mi nombre es: $name $secondName $surname");
}

En esta función podemos ver como hemos situado el parámetro opcional despues de los parámetros requeridos, esto se debe a que los parámetros opcionales deben ir siempre despues de los requeridos, de lo contrario no compilará.

Te preguntuntaras, ¿Que ocurré con la variable segundoNombre , si no la hemos pasado a la función?. La variable segundoNombre será nula. Y nosotros no queremos mostrar «John null Wick», ¿Cierto?.

Para evitar esto podemos agregar un valor por defecto que va a ser utilizado en lugar del parámetro opcional cuando este sea nulo.

Para agregar un valor por defecto a un parámetro opcional, todo lo que necesitamos hacer es una asignación. Para entenderlo mejor puedes ver el siguiente ejemplo:

void imprimirNombreCompleto(String nombre, String apellido, [String segundoNombre = ""]){
    print("Mi nombre es: $nombre $segundoNombre $apellido");
}

Ahora el valor será un String vacio y el texto será mostrado correctamente.

Para usar la función con parámetros opcionales que hemos creado previamente hacemos lo siguiente.

imprimirNombreCompleto("John","Wick");
//O
imprimirNombreCompleto("Scarlett","Johansson","Ingrid");

En el caso que quieras utilizar todos los parámetros de la funcion como opcionales puedes encerrarlos entre corchetes como muestra el siguiente ejemplo.

void imprimirNombreCompleto([String nombre, String segundoNombre, String Apellido]){
    print("Mi nombre es: $nombre $segundoNombre $apellido");
} 

Named parameters / Parámetros nombrados

Este tipo de parámetros permite indicarle a la función cual es el parámetro que estas pasando. Para lograr esto tenemos que colocarlo entre llaves.

Ejemplo:

void imprimirParametrosNombrados(String nombre,String apellido,{String segundoNombre = ""}){
    print("$nombre $segundoNombre $apellido")
}

En este ejemplo hemos usado el nombre y el apellido como parámetros requeridos. Y el segundo nombre como parámetro nombrado ademas nos aseguramos de tener un valor por defecto por si no se proporciona ningun valor.

Cuando queremos utilizar una función con parámetros requeridos debemos hacerlo de la siguienta manera:

imprimirParametrosNombrados("Samuel","Jackson",segundoNombre: "Leroy");

En este ejemplo podemos ver que necesitamos indicar el nombre del parámetro dentro de la función y despues de los dos puntos indicamos el valor del parámetro.

En el caso en que necesitemos tener una función con solo parámetros nombrados lo que tenemos que hacer es incluir dentro de las llaves todos los parámetros.

void imprimirParametrosNombrados({String nombre,String apellido,String segundoNombre = ""}){
    print("$nombre $segundoNombre $apellido")
}

Cuando una función tiene unicamente parámetros nombrados no importa el orden en el que los utilicemos.

Por ejemplo:

imprimirParametrosNombrados(nombre: "Scarlett",segundoNombre:"Ingrid",apellido:"Johansson");

¿Genial, no?.

Ahora es tu turno

Puedes probar estos conceptos en Entornos de desarrollo (IDE) como Intellij Idea Community, que es gratis e instalar el plugin de Dart, si te gusta Visual Studio Code tambien puedes probar estos conceptos en él y por último si prefieres algo online, puedes utilizar Dartpad.

Post anterior

Si estás interesado en más post como este puedes revisar mis otros artículos sobre Dart.

¿Quieres saber mas sobré Dart?

Si te ha gustado este post y estás interesado en aprender Dart, actualmente estoy escribiendo más artículos como este en un ebook, el cual es un curso básico de Dart que te ayudará a tener un buen conocimiento que luego podrás utilizar para empezar con Flutter ;). Puedes darte de alta en este link ya que el ebook será totalmente gratis.

CategoriasDart

Funciones en Dart

En esta oportunidad vamos a hablar sobre las funciones,como funcionan en Dark y sus tipos.

🤔¿Qué es una función?

Una función es un bloque de código que debe ser organizado, realizar una sola tarea y debe estar relacionado a la clase en la que estamos trabajando.¿Por qué digo «debería» ? Porque mucha gente tiende a olvidarse de esto y creeme que te encontrarás muchos de estos casos en tu vida profesional.

Las funciones también deben ser en su mayoriareusables, esto reducirá la cantidad de código que escribes e incrementará la cantidad del mismo. Si ha sido hecho correctamente, claro.

👨‍🔬 Anatomía de las funciones

Existen muchos tipos de funciones en Dart, primerovamos a aprender sobre coymo funciona una función y luego vamos a hablar sobre los otros tipos de funciones.

Las funciones son usualmente creadas con la siguiente sintaxis:

Dónde:

void es el tipo que regresa la función, esto significa que cuando una función ejecuta todo el código dentro de ella esta debe regresar un valor de este tipo.

Espera un momento… Nosotros no estamos regresando nada, solo estamos imprimiendo un nombre. Cuando no necesitamos regresar un valor decimos que es del tipo void.

printName es el nombre de la función, un nombre que vamos a necesitar usar después, el mismo debe saber explicar qué hace esta función.

(String name), dentro del paréntesis vamos a especificar el tipo del parámetro que va a recibir la función y el nombre de este parámetro. Los parámetros son variables que están disponibles dentro de la función, hablaremos más sobre ellos en el siguiente capitulo.

Veamos un ejemplo clásico:

Esta función suma dos enteros, le pasamos a la función un primer y un segundo valor y esta nos regresa la suma de los dos. Podemos usarla de la siguiente manera:

En este código creamos una variable llamada resultado la cual almacena el valor que obtenemos de la función sum, cuando usamos print para imprimirla el resultado es 4.

En simples palabras podría decirse que una función funciona como una maquina de helados, puedes agregar los ingredientes (parametros) y debería regresar un delicioso helado. Veamos otro ejemplo:

En este ejemplo más avanzado hemos creado una función llamada IceCreamMachine (Máquina de Helados) la cual regresa un objeto AwesomeIceCream (HeladoIncreible). Este objeto es una instancia de una clase, esto lo hablaremos luego. Pero manten en mente que AwesomeIceCream es un tipo de objeto como lo es un String, un Entero o un Double.

➡️Arrow function (Funciones Flecha)

En Dart existen otro tipos de funciones, veamos las siguientes.

Las Arrow Function llamadas Funciones Flecha en español, son funciones que solo pueden tener una línea de código y te darás cuenta que tendrá en lugar de paréntesis una flecha =>

Este tipo de funciones nos ayuda a mantener nuestras funciones pequeñas e incrementar la legibilidad del código. Vamos a convertir nuestros ejemplos anteriores a arrow functions.

Empecemos con la función sum, en primer lugar necesitamos remover los paréntesis y agregar la flecha, después de la flecha debemos agregar la lógica de nuestra función, ¡y eso es todo! Hemos creado exitosamente nuestra primera arrow function.

Ahora es tu turno, ¿Por qué no intentas convertir por tu cuenta la función iceCreamMachine?

🕵️‍♀️ Funciones anónimas

Como hemos hablado previamente todas las funciones deben tener un nombre, pero no es el caso de las funciones anonimas. Esta función es llamada en el momento y pasada como parámetro a otras funciones 🤯. Veamos un ejemplo:

Nota: Lo que hace la función
ForEach es ejecutar el código dentro de ella por cada elemento de la lista. No te preocupes ya que vamos a ver más sobre las collections en otro capitulo.

La función de la que hemos hablado imprime el siguiente resultado:

We have the chocolate flavour
We have the vanilla flavour
We have the orange flavour

¿Qué ha pasado aquí?. La función forEach recibe como parámetro una Function (función), en Dart Function es un tipo también.

Para las funciones anónimas la sintaxis es la siguiente:

parameterName : El nombre del parámetro

Body of the function: El cuerpo de la función, la lógica que queremos que tenga la función.

Si te sientes confundido no te preocupes, intenta verlo de esta forma: Las Anonymous functions son una forma corta de crear una función.

Supongamos que tienes una lista y que quierer recorrer toda la lista para imprimir los objetos que se encuentran dentro de ella, pero quieres tener una función que lo haga. Podríamos hacer algo como esto:

Pero como queremos imprimir nuestros números en otra función, podemos crear la función getPrintElementFunction().

Esta función regresa una función 🤯. ¿Es un poco raro, no? Luego podríamos utilizarla dentro de nuestra función forEach de la siguiente manera.

Esto podrá compilar e imprimir el mismo resultado de la función que vimos previamente, pero es un poco feo si quieres hacer algo tan simple como imprimir algo ¿No lo crees?

Ahora es tu turno

Puedes probar estos conceptos en Entornos de desarrollo (IDE) como Intellij Idea Community, que es gratis e instalar el plugin de Dart, si te gusta Visual Studio Code tambien puedes probar estos conceptos en él y por último si prefieres algo online, puedes utilizar Dartpad.

Post anterior

Si estás interesado en más post como este puedes revisar mis otros artículos sobre Dart.

¿Quieres saber mas sobré Dart?

Si te ha gustado este post y estás interesado en aprender Dart, actualmente estoy escribiendo más artículos como este en un ebook, el cual es un curso básico de Dart que te ayudará a tener un buen conocimiento que luego podrás utilizar para empezar con Flutter ;). Puedes darte de alta en este link ya que el ebook será totalmente gratis.

 

CategoriasDartProgramación

Variables en Dart

 

¿Qué son las variables?

En este articulo vamos a aprender sobre las variables en Dart, las variables son como cajas pequeñas que tienen una referencia a un valor. Y estas cajas pequeñas pueden tener un nombre para identificarlas facilmente.

¿Cómo podemos crear variables en Dart?

En Dart podemos crear variables de tres formas:

Usando la palabra reservada var

Podemos crear una variable utilizando la palabra reservada var antes del nombre de la variable, y luego del nombre de la variable el valor que le queremos asignar, veamos el siguiente ejemplo:

Nota: la instrucción print(año) imprime el valor de variable. (Se usa año como ejemplo, pero no es un tipo de variable aceptada en Dart)

Esto que acabamos de ver es una inferencia de tipos. La inferencia de tipos es una funcionalidad que tiene el compilador de Dart para poder deducir el tipo de la variable que estamos creando.

Declarando una variable especificando el tipo

También podemos declarar el tipo de la variable como en el ejemplo a continuación:

Usando la palabra reservada dynamic

La palabra reservada dynamic nos permite declarar una variable en la que el tipo puede cambiar en tiempo de ejecución y puede ser definida de la siguiente forma:

Ahora es tu turno

Puedes probar estos conceptos en Entornos de desarrollo (IDE) como Intellij Idea Community, que es gratis e instalar el plugin de Dart, si te gusta Visual Studio Code tambien puedes probar estos conceptos en él y por último si prefieres algo online, puedes utilizar Dartpad.

¿Quieres saber mas sobré Dart?

Si te ha gustado este articulo y estas interesado en aprender Dart, actualmente estoy escribiendo más articulos como este en un ebook, el cual es un curso básico de Dart que te ayudará a tener un buen conocimiento que luego podrás utilizar para empezar con Flutter ;). Puedes darte de alta en este link ya que el ebook será totalmente gratis.

 

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies