Forum: Rails-ES Problemas al leer array de objetos

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Nicolas O. (Guest)
on 2007-04-30 11:56
f = flickr.photos.getSizes(390890953).sizes
f
=> {:Original=>#<Flickr::Size:0x28ca060 @height=1200, @width=1600,
@source="http://farm1.static.flickr.com/175/390890953_fd083...,
@url="http://www.flickr.com/photo_zoom.gne?id=390890953&...,
@label="Original">, :Large=>#<Flickr::Size:0x28ca3a8 @height=768,
@width=1024,
@source="http://farm1.static.flickr.com/175/390890953_fd083...,
@url="http://www.flickr.com/photo_zoom.gne?id=390890953&...,
@label="Large">, :Medium=>#<Flickr::Size:0x28ca6a0 @height=375,
@width=500,
@source="http://farm1.static.flickr.com/175/390890953_fd083...,
@url="http://www.flickr.com/photo_zoom.gne?id=390890953&...,
@label="Medium">, :Small=>#<Flickr::Size:0x28ca998 @height=180,
@width=240,
@source="http://farm1.static.flickr.com/175/390890953_fd083...,
@url="http://www.flickr.com/photo_zoom.gne?id=390890953&...,
@label="Small">, :Square=>#<Flickr::Size:0x28cafb0 @height=75,
@width=75,
@source="http://farm1.static.flickr.com/175/390890953_fd083...,
@url="http://www.flickr.com/photo_zoom.gne?id=390890953&...,
@label="Square">, :Thumbnail=>#<Flickr::Size:0x28cac90 @height=75,
@width=100,
@source="http://farm1.static.flickr.com/175/390890953_fd083...,
@url="http://www.flickr.com/photo_zoom.gne?id=390890953&...,
@label="Thumbnail">}

Por consola hago esto pero no se como leer los resultados, quiero
obtener el atributo @source de square, he intedo con
f.size.square.source y nada...

Gracias de antemano.
javier ramirez (Guest)
on 2007-04-30 12:18
(Received via mailing list)
Hola,
> => {:Original=>#<Flickr::Size:0x28ca060 @height=1200, @width=1600,
> @source="http://farm1.static.flickr.com/175/390890953_fd083...,
>
> Por consola hago esto pero no se como leer los resultados, quiero
> obtener el atributo @source de square, he intedo con
> f.size.square.source y nada...
>
yo primero probaría a hacer un .methods sobre el objeto almacenado en
:Original

Lo lógico sería que si esa variable la quieran tener accesible desde
fuera, tengan definido un accessor, por lo que entre los methods habría
un "source" y puede que un "source="

Puede que exista uno de esos métodos o algún otro que te devuelva
directamente el valor source, y ésa debería ser la forma recomendada de
acceder a él ya que formaría parte del interfaz público de la clase y si
en el futuro cambia su funcionamiento interno, tu cliente no nota el
cambio.

Para el caso de que no haya un método que te de la variable source, o
para el caso de que el accessor sea privado, todavía se puede jugar un
poco con ruby y sobre tu objeto puedes pedirle un
.instance_variable_get('@source') o
.instance_variable_set('@source',valor)

Esto último lo recomiendo poco, porque implica usar un api de diferente
manera a como fue diseñada y te deja expuesto a que futuros cambios en
el api dejen tu aplicación fuera de combate. Pero funcionar funciona...

Saludos,

javier ramirez

--
--------
Estamos de estreno... si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!
Nicolas O. (Guest)
on 2007-05-01 04:12
> yo primero probar�a a hacer un .methods sobre el objeto almacenado en
> :Original
>

Hola Javier

Sacandole el .methods... llegue a collect y agrupandolos despues todo se
hizo mas facil... asi quedo la sentencia final.

flickr.photos.getSizes(390890953).sizes.collect[0][1].source

Gracias,
This topic is locked and can not be replied to.