Ruby idiomático I

Roberto Rivas
Academia Hack
Published in
3 min readJun 4, 2019

Código Idiomático

Cuando se habla de código idiomático, simplemente se hace referencia al código escrito en el cual se aprovechan las bondades y se siguen las convenciones del lenguaje con el cual se esté trabajando.

En el caso de Ruby, uno de sus objetivos descrito por su creador Yukihiro Matsumoto, es hacer feliz al programador, que la escritura del código sea divertido.

Oh yeah, fun!

De tal forma que escribir código idiomático en ruby da ciertas ventajas:

  • La sintaxis del lenguaje es de fácil comprensión para cualquier humano.
  • El conjunto de métodos predefinidos con el lenguaje hace que cualquier problema pueda ser solucionado fácilmente con la utilización de estos.
  • Reducción de tiempo en la resolución de problemas.

Métodos idiomáticos en Ruby:

Estos son algunos de los métodos que están predefinidos por ruby para simplificar tu código y llegar a la solución deseada.

Iteración:

  • each: corre un bloque de código por cada elemento y retorna el hash o array iterado.
mentors = ['Carlos', 'Alejandro', 'Juan']mentors.each { |element|  puts "hola #{element}"}#['Carlos', 'Alejandro', 'Juan']
  • map: retorna un nuevo arreglo con el resultado de correr un bloque de código por cada elemento dentro de el.
numbers = [9, 2, 5]numbers.map { |element| element + 10 }#[19, 12, 15]
  • each_with_index: corre un bloque de código el cual recibe dos parámetros, el primero representa un elemento y el segundo el index por cada iteración. Devuelve el hash o array iterado.
mentors = ['Carlos', 'Alejandro', 'Juan']mentors.each_with_index { |item, index| puts "#{index} - #{item}" }#['Carlos', 'Alejandro', 'Juan']
  • any?: método que actúa sobre un arreglo, el cual aplica un bloque de código por cada elemento en el arreglo iterado, devolviendo true si al menos un elemento cumple con la expresión escrita en el bloque.
numbers = [5, 3, 5, 8]numbers.any? { |number| number > 5 }#true
  • all?: similar al método any?, con la diferencia que retornara true solo si, todos los elementos cumplen con la expresión escrita en el bloque.
numbers = [3, 5, 7, 9]numbers.all?{ |number| number > 0 }#true

Búsqueda:

  • find: método que recibe un bloque de código y devuelve el primer elemento que cumpla con la expresión escrita en el bloque.
countries = ['colombia', 'italy', 'russia', 'venezuela']countries.find { |country| country == 'italy' }#"italy"
  • include?: se puede preguntar si un elemento se encuentra dentro de un arreglo.
array = ['azul', 'rojo', 'naranja', 'morado']array.include?('morado')#true
  • max y min: a veces se necesita obtener el elemento de valor máximo o mínimo dentro de un array, para ello utilizamos los métodos min o max.
array = [3, 9, 14, 2, 8] array.min#2array.max#14
  • first y last: también es necesario algunas veces acceder a la primera o última posición de un arreglo.
array = [3,9,14,2,8]array.first#3array.last#8
  • select: es un método que recibe un bloque de código y devuelve un nuevo arreglo que contenga todos los elementos los cuales cumplan con la expresión escrita en el bloque.
[-1, 2, -3, 4, -5].select { |num| num > 0 }#[2, 4]

Ordenamiento:

  • sort: la forma más básica de ordenamiento es proporcionada por el método sort , este método retorna un nuevo arreglo.
numbers = [5, 3, 2, 1]sorted_array = number.sort#[1,2,3,5]
  • sort_by: ahora veamos un ordenamiento más avanzado, como poder ordenar por el largo (length) de un string.
array = ["ruby", "javascript", "php", "python", "java"]array.sort_by{ |word| word.length }#["php", "ruby", "java", "python", "javascript"]
  • shuffle: método que retorna el arreglo sobre el cual actúa, de manera desordenada.
a = [ 1, 2, 3 ]  a = a.shuffle

--

--