Como cada navidad, desde el 25 de Diciembre tenemos disponible una nueva versión de Ruby. Matz y su cuadrilla nos han traído la que será la última major release de Ruby 2, dado que el año que viene ya tendremos Ruby 3.0!
Vamos a mostrar algunas de las nuevas características que incorpora esta nueva versión de Ruby, vamos a comenzar sin mas dilación.
Rangos sin inicio/fin
Ruby 2.7 ha introducido un nuevo atajo que nos permite definir rangos del tipo «todo lo que haya por debajo de..» o «todo lo que quede por encima de…» muy útil por ejemplo con fechas, como el siquiente ejemplo:
case release_date when ..1.year.ago puts 'Unsupported version' when 1.year.ago..3.months.ago puts 'Still supported' when 3.months.ago..Time.now puts 'current version' when Time.now.. puts 'still not released' end
Operador flip-flop
Vuelve el operador flip-flop en esta versión 2.7 de Ruby. El operador flip flop lo que nos permite es definir un rango en una sentencia condicional, vamos a ver un ejemplo que va a resultar bastante más ilustrativo
(1..10).each { |i| puts i if (i == 4) .. (i == 6) }
En este bloque de código el operador flip flop son los dos puntos que nos determinan un rango tras el if, la sentencia condicional. En este caso, este bloque de código, bastante inútil por otra parte, lo que hará será simplemente imprimir en pantalla el índice i, pero solamente cuando esté comprendido entre 4 y 6.
Array#intersection
Ahora disponemos también del método intersection para trabajar con objectos de tipo array. Veamos un ejemplo
[1,2,3,4,5,6,7].intersection([2,5,8]) => [2,5]
Este método nos resulta muy útil para poder detectar elementos coincidentes entre dos arrays.
Enumerable#filter_map
Si lo que queremos es transformar un array y filtrar al mismo tiempo, hasta ahora lo hacíamos de esta manera, entre otras:
[1, 2, 3, 4, 5].select { |x| x.odd? }.map { |x| x.to_s } => ["1", "3", "5"]
Con esta línea de código seleccionamos los valores impares y los convertimos en string en lugar de integer. Ahora, en Ruby 2.7 tenemos el operador filter_map que nos permite hacerlo de la siguiente manera:
[1, 2, 3, 4, 5].filter_map {|x| x.odd? ? x.to_s : nil } => ["1", "3", "5"
Enumerable#tally
Ahora podemos obtener el número de repeticiones de un elemento dentro de un array con este método, vamos a mostrar su funcionamiento con este ejemplo:
["developer", "designer", "designer", "developer", "cto", "lead developer"].tally => {"developer" => 2, "designer" => 2, "cto" => 1, "lead_developer" => 1}
Estas son algunas de las novedades que nos presenta esta nueva versión Ruby 2.7, hay muchas nuevas features experimentales también, si quieres más información te dejo el enlace a la release completa
Deja una respuesta