lunes, 11 de febrero de 2013

Echando a andar (2 de 2)

Arrays

Otra clase útil es Array. Los objetos de tipo Array sirven para guardar una serie de objetos en orden. Y cuando se habla de "objetos", en general, quiere decir que pueden mezclarse en un Array objetos de distintas clases. Se puede crear uno con una instrucción como:

a= [12,3,9, 5, "hola", 24]



 Los corchetes “[“ y “]” encierran a los elementos del Array, que van separados por comas. Un objeto de tipo Array puede contener también (¡cómo no!) otros arrays. O estar vacío, en cuyo caso se expresaría como “[]”:



Extraer elementos de un Array es muy sencillo. Probemos con “array1[1]”:



La posición del elemento deseado se indica entre corchetes “[“ y “]”. Obsérvese que el primer elemento de un Array tiene el índice “0”. El segundo, “1”. El tercero, “2”. Y así sucesivamente. Si se especifica un índice para el que no hay elemento, se obtendrá “nil” como respuesta:




Recordarás que el primer elemento de array1 era otro Array. Así:



Y puedes extraer datos de un Array y manipularlo sin necesidad de almacenarlo en una variable. Algo que puedes hacer con otras clases también y que permite en ocasiones que los programas queden muy resultones:



Observa que las cadenas de este ejemplo están encerradas entre comillas simples, no dobles como en los casos anteriores. Puedes utilizar unas u otras según te convenga. Y no son las únicas formas de escribir una cadena.

Hashes (que no, no insistas, que no es eso que se fuman algunos)

Hay otra clase parecida a Array en la que los índices no tienen por qué ser números enteros. Se denomina Hash. Para escribir un objeto de la clase Hash se usan las llaves “{“ y “}”. Fíjate bien en la notación:

mi_hash = {'abc'=> 11, "def" => 'abc'}




A la variable mi_hash se le asigna un Hash con dos elementos. El primero tiene como índice la cadena ‘abc’ y como valor 11. El índice del segundo es “def” y su valor ‘abc’. Para obtenerlos se usa una notación similar a la de los Arrays:


Recuerda que a Ruby le da igual si pones comillas simples o dobles cuando escribes una cadena.

Symbols


La última clase que veremos por ahora es Symbol. Curiosa clase, porque se usa para crear objetos a los que no queremos asignar ningún valor. Son como etiquetas autodescriptivas. Los “símbolos” comienzan con el carácter de dos puntos “:”, como en:





En este caso, se ha asignado a la variable color el valor    “:rojo”

Los objetos de tipo Symbol se manejan de forma más eficiente que las cadenas a la hora de asignaciones y comprobaciones.

Como se indicó anteriormente, cada clase tiene sus métodos, si bien hay algunos que suelen estar definidos casi siempre. Como to_s, que convierte un objeto en su representación como cadena. Así, en el caso anterior se tendría





Observa como entre el objeto al que se aplica y el nombre del método hay un punto “.”. Esto ya lo vimos antes cuando se invocaron los métodos “class” y “methods” al número, Fixnum, 2.

Los Symbols son objetos y, aunque no representen ni cadenas ni números, tampoco son iguales a nil. Se puede comprobar esto evaluando “:rojo.nil?”









 nil? es un método que indica si un objeto es igual a nil o no. Te habrás fijado en el interrogante del final “?”. Es una convención que los métodos que retornan un valor de cierto o falso terminen así. Como ocurre también con “is_a?”, que nos dice si un objeto pertenece o no a una determinada clase:



Otra cosa a recordar: cuando se pasan parámetros a un método, si hay más de uno, se separan con comas.
Más adelante veremos algunos ejemplos. Pero ya es suficiente por ahora. Para salir del intérprete irb, escribe “exit”. Y ya sabes lo que hay que hacer después…



No hay comentarios:

Publicar un comentario