No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Ruby

Curso de Ruby

Simón Soriano

Simón Soriano

Tipos de datos IV: Arrays

7/39
Recursos

Un array o arreglo es un tipo de datos especial donde vas a poder almacenar múltiples objetos en una sola variable.

Ejemplo:

letras = [ ""q"", ""w"", ""e"", ""r"", ""t"", ""y""]

Algo interesante de Ruby es que podemos utilizar números negativos para acceder a las posiciones desde el último elemento del array.

Los arreglos en Ruby no tienen un tipo específico, esto quiere decir que dentro de un array podemos tener diferentes tipos de datos en cada elemento.

Aportes 21

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si quieren limpiar la consola:

CTRL + L

Métodos:

  • letras.include? “y” (Devuelve true si incluye dicho elemento)
  • letras.count { |x| x == “y” } (Nos retorna la cantidad de elementos que cumplen dicha condición)
  • [1,2,3,4,5].map { |x| x*2 } (Nos retorna un arreglo modificado según la condición)
  • [1,2,3,4,5].select { |x| x.even? } (Nos retorna un arreglo con los elementos seleccionados según la condición)
  • [1,2,3,4,5].min (Nos va a retornar el elemento más pequeño)
  • [1,2,3,4,5].max (Nos va a retornar el elemento más grande)
  • [1,2,3,4,5].sum (Retorna la suma de todos los elementos del arreglo)
  • “Hola Mundo”.split(" ") (Nos retorna un arreglo con la cadena dentro separada por el elemento dentro del paréntesis)
  • [“a”, “b” ,“c”].join("-") (Retorna los elementos de una matriz en una cadena separada por el elemento dentro del paréntesis)
  • letras.sort (Nos retorna una copia ordenada del arreglo)

Hola … esta bueno explicar para que usan "map"
es para manejar la inmutabilidad de la lista.
Osea, Es una buena practica en todos los lenguajes de programacion ahora modernos no mutar tu array original. Cuando queres trabajar sobre una lista y no modificar tu lista original, sino generar una nueva lista con los changes hechos.

Arrays

Un array (o lista) es un conjunto ordenado: cada posición en la lista es una variable que podemos leer y/o escribir.

    - Un array puede ser un conjunto de elementos distintos
    - Algunas veces, crear arrays de palabras puede ser tedioso debido a tantas comillas y comas. en Ruby podemos hacerlo de la siguiente manera « nombres2 = %w{ ann richard william susan pat }» 
    - El método each extrae cada elemento del array dentro de la variable que se le especifique (que irá entra dos barras | |), que se usará en bloque do…end.
    - Método +: Con este método sumamos arrays. Es decir, le agregamos el contenido de uno al final del otro. 
    - Método –: De la misma manera podemos restar arrays.
    - Método *: Muy parecido podemos multiplicar un array por un número. 
    - Método '<<': Al ya tener un array podemos agregarle nuevos objetos con el método
    - Método &:A este método se le conoce como intersección por que retorna los elementos comunes de dos arrays sin duplicados.
    
- Conceptos extraídos de :
    - http://rubytutorial.wikidot.com/arrays
    - http://www.maestrosdelweb.com/la-clase-array-en-ruby/  

Arrays


Un Array es un tipo de dato especial donde vamos a poder almacenar múltiples objectos en una sola varibles

# Así escribimos un array
letras = ["a","b","c","d","e","f","g"]

# Para acceder a las posición de cada objeto, lo hacemos como en JS
letras[0]

Algo especial de Ruby es que podemos utilizar números negativos para acceder a posiciones desde el último elemento en el Array. Si utilizamos un número que exceda la cantidad de objetos que hay en el Array no mostrar ningún resultado.

letras[-1]

También podemos acceder al método methods con métodos

# Para ver que clases de objeto es methods
letras.methods.class

# Para cuánto objetos hay dentro de methods
letras.methods.size

Otros métodos que podemos utilizar para un Array son:

# Para saber si hay un elemento x dentro del array
letras.include? "a"

# Para saber cuál es el primer elemento
letras.first

# Para saber cuál es el último elemento
letras.last

Con el método .count podemos especificar una condición, es como una mini función, recibe un parámetro y podemos preguntar algo sobre el parámetro

# Estamos preguntando cuántos elementos son iguales a "q"
letras.count { |x| x == "q" }

# Estamos preguntando cuántos elementos son pares
[1,2,3,4,5].count { |x| x.even? }

# El método .map se utiliza para transformar cada uno de los elementos del array
[1,2,3,4,5].map { |x| x*2 }

# El método .select es equivalente al método .filter de JS. Se encarga de filtrar algunos elementos que cumplan con una condición
[1,2,3,4,5].select { |x| x.odd? }

# Nos retorna el elemento más pequeño
[1,2,3,4,5].min

# Nos retorna el elemento más grande
[1,2,3,4,5].max

# Va sumar todos los elementos del Array
[1,2,3,4,5].sum

Algo a tener en cuenta es que los Arrays en Ruby no tienen un tipo es específico, lo cual quiere decir que pueden ser de diferentes tipos.

array_1 = [1, 4.5, "string", :symbol, []]

array_1.map { |x| x.class }

Algunos Strings retornar Arrays.

"Hola mundo".split(" ") # ["Hola","mundo"]

"Hola mundo".split(" ").size # 2

"Hola mundo".split(" ").map { |x| x.upcase } # ["HOLA", "MUNDO"]

puts("Hola mundo".split(" ").map { |x| x.upcase }.join("\n") )
# HOLA 
# MUNDO

# El siguiente método puede ordenar el Array
["r","i","c","w","e","f","a"].sort # ["c", "i", "r", "w"]

Para agregar elementos a un array podemos usar:
push inserta el elemento al final del array:
arr = [1, 2, 3, 4] arr.push(5) #=> [1, 2, 3, 4, 5] arr << 6 #=> [1, 2, 3, 4, 5, 6]
unshift Inserta el elemento al inicio del array:
arr.unshift(0) #=> [0, 1, 2, 3, 4, 5, 6]
insert Agrega un elemento en la posición que queramos:
arr.insert(3, 'apple') #=> [0, 1, 2, 'apple', 3, 4, 5, 6]
nota: el insert nos permite insertar uno o mas elementos dentro del array al mismo tiempo

Ordenar los methods: <array>.methods.sort
Porque todo en ruby es un objeto, muy interesante.

Pues anda, muy similar a Javascript

pero por que |x| que es lo que eso hace ?

Creo que deberían explicar mejor que es un lambda antes de pasar a usarlos

Esto es interesante, yo estoy usando ruby 2.7 y me da 10 nuevos metodos en Array.methods.size

estaria padre poder saber cuales se agregaron desde la 2.5 que usa el profesor.

inlcuso ayer que salio la version 3.0 de ruby, ver esto mismo.

Los arreglos son usados para cuando necesitas trabajar con un grupo grande de elementos similares.

Una pequeña lista de métodos para arreglos:

length ¿qué tan grande es este arreglo? (cuántos elementos)
first obtiene el primer elemento del arreglo (lo mismo que arreglo[0])
last obtiene el último elemento del arreglo (lo mismo que arreglo[-1])
push agrega un nuevo elemento al final del arreglo
pop elimina (y regresa) el último elemento del arreglo

Hola explicas mas adelante la diferencia entre procs, lambda, y lo que es yield y el uso de bloques en general? Ando algo perdida con respecto a eso. Gracias.

Tipos de datos

Los tipos de datos básicos en ruby son 6

  • Numbers (Numeric)
  • Strings
  • Symbols
  • Hashes
  • Arrays
  • Booleans

Para conocer la API de los distintos tipos y demás, puedes ir a este link 👈 (El link proporcionado es de la versión 3.1.2)


API de los tipos de datos

En esta lista puedes encontrar los links a la documentación de cada uno de los tipos de datos, donde puedes visitar para ver los distintos metodos que puedes usar con cada tipo de dato disponible.

Estos tipos de datos son base, pues de ellos pueden salir otros tipos más, como pueden ser el tipo Integer, Float, entre otros.

letras.count{ |x| x == “y” }

Con “puts” siempre se crea una nueva linea asi que no es necesario el .join ("\n")

Tambien se puede ocupar << en vez de push.

Meclando marca personal con el curso de Ruby https://www.instagram.com/p/B6gr6rDH81s/

no me funciona el ‘method’ sum, a alguien mas le pasa?

irb(main):158:0> numeros.sum
NoMethodError: undefined method `sum' for [1, 2, 3, 4, 5]:Array
	from (irb):158
	from /usr/bin/irb:11:in `<main>'
irb(main):159:0> [1, 2, 3, 4, 5].sum
NoMethodError: undefined method `sum' for [1, 2, 3, 4, 5]:Array
	from (irb):159
	from /usr/bin/irb:11:in `<main>'
irb(main):160:0>```

Hola comunidad ¿Cuál creen que es la diferencias entre métodos count y size para determinar el tamaño de un array?

ejemplo :

color = :rojo
color2 = :rojo

color = color2 (en el id)

Los simbols no son strings