Arrays
Un array (o lista) es un conjunto ordenado: cada posición en la lista es una variable que podemos leer y/o escribir.
# Arrays (o vectores) # array vacío vec1 = [] # Los índices empiezan desde el cero (0,1,2,...) nombres = ['Satish', 'Talim', 'Ruby', 'Java'] puts nombres[0] puts nombres[1] puts nombres[2] puts nombres[3] # si el elemento no existe, se devuelve nil puts nombres[4] # pero podemos añadir a posteriori más elementos nombres[3] = 'Python' nombres[4] = 'Rails'
Un array puede ser un conjunto de elementos distintos:
=begin un array cuyos elementos apuntan a otros tres objetos: un decimal, un string y un array =end sabor = 'mango' vec4 = [80.5, sabor, [true, false]] puts vec4[2]
Usando %w
Algunas veces, crear arrays de palabras puede ser tedioso debido a tantas comillas y comas. Afortunadamente, Ruby tiene una forma más cómoda para hacerlo:
nombres1 = [ 'ann', 'richard', 'william', 'susan', 'pat' ] puts nombres1[0] # ann puts nombres1[3] # susan # esto es más sencillo y más rápido: nombres2 = %w{ ann richard william susan pat } puts nombres2[0] # ann puts nombres2[3] # susan
El método each
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.
ciudades = %w{ Pune Mumbai Bangalore } ciudades.each do |ciudad| puts '¡Me gusta ' + ciudad + '!' puts '¿A ti no?' end #El método {{**delete**}} borra un elemento ciudades.delete('Mumbai') ciudades.each do |ciudad| puts '¡Me gustaba '+ciudad+'!' puts '¿A ti ya no?' end
Por lo tanto el método each nos permite hacer una cosa (la que sea) con cada objeto del array. En el ejemplo, fuimos elemento por elemento del array sin usar los índices. Hay que destacar:
- Los variable entre los "postes" se refiere a cada ítem del array a medida que avanzamos en el loop. Se puede usar cualquier nombre, pero es mejor dotarlo de cierto significado.
- El do…end identifica el bloque de código que se ejecutará con cada elemento del array. Los bloques son usados intensivamente en Ruby, y se tratarán en profundidad más adelante. Es posibles sustiturlos por las llaves de inicio y fin.
Otros métodos
vec = [34, 12, 1, 38] puts vec.sort puts vec.length puts vec.first puts vec.last
Obteniendo arrays
Un método puede devolver un array:
def num_cuadrado(num) cuadrado = num * num return num, cuadrado end =begin el método nos devuelve un array con el número y su cuadrado =end x=3 num_cuadrado(x) =begin si queremos almacenar el resultado hay que hacerlo por asignación en paralelo =end num, cuadrado = num_cuadrado(x)
Ejercicios
- Escribe un programa tal que, dado un array numérico, calcule la suma de sus elementos. Por ejemplo, array = [1, 2, 3, 4, 5]
- Escribe un programa tal que, dado un array de números, diga de cada uno si es par o impar. Por ejemplo, array = [12, 23, 456, 123, 4579]
revisión de página: 9, última edición: 14 Feb 2013 16:06