Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

how to access something within an array

0 views
Skip to first unread message

bingo bob

unread,
Jan 2, 2010, 2:15:27 AM1/2/10
to
I have this array...

[#<Yahoo::GeoPlanet::Place:0x1031d3fb8 @bounding_box=[[42.554428,
1.52747], [42.536251, 1.50279]], @name="La Massana", @woe_id="472580",
@longitude=1.5153, @latitude=42.545052>]

How do I access the thing called @woe_id within it!

Whatever I try I can't seem to get at it?
--
Posted via http://www.ruby-forum.com/.

Marnen Laibow-Koser

unread,
Jan 2, 2010, 3:16:55 AM1/2/10
to
bingo bob wrote:
> I have this array...
>
> [#<Yahoo::GeoPlanet::Place:0x1031d3fb8 @bounding_box=[[42.554428,
> 1.52747], [42.536251, 1.50279]], @name="La Massana", @woe_id="472580",
> @longitude=1.5153, @latitude=42.545052>]

That array contains one entry, a Yahoo::GeoPlanet::Place object.

>
> How do I access the thing called @woe_id within it!
>
> Whatever I try I can't seem to get at it?

Right. The @ at the beginning of the name tells you that it's an
instance variable (of the Place object). You can't directly get at an
object's instance variables from outside (except by using dangerous
tricks that I don't recommend), so check the rdoc for the Place class to
see if there's an accessor method or something that will give you the
woe_id.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

Philippe Cantin

unread,
Jan 2, 2010, 6:48:59 AM1/2/10
to
You should have an accessor , try : geo_planet_object.woe_id .

You can use introspection with :
geo_planet_object.instance_variable_get(:woe_id) ....

Marnen Laibow-Koser

unread,
Jan 2, 2010, 12:49:33 PM1/2/10
to
Philippe Cantin wrote:
> You should have an accessor , try : geo_planet_object.woe_id .
>
> You can use introspection with :
> geo_planet_object.instance_variable_get(:woe_id) ....

But don't. Introspection is dangerous in this case, and should not be
necessary. Just use the object's interface.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

Brian Candler

unread,
Jan 2, 2010, 1:34:31 PM1/2/10
to
bingo bob wrote:
> I have this array...
>
> [#<Yahoo::GeoPlanet::Place:0x1031d3fb8 @bounding_box=[[42.554428,
> 1.52747], [42.536251, 1.50279]], @name="La Massana", @woe_id="472580",
> @longitude=1.5153, @latitude=42.545052>]
>
> How do I access the thing called @woe_id within it!
>
> Whatever I try I can't seem to get at it?

You may get a hint from this:

thing = arr.first
p thing.methods - Object.methods

Marnen Laibow-Koser

unread,
Jan 2, 2010, 3:10:51 PM1/2/10
to

Good point, although that's not terribly reliable if method_missing
fakery is involved.

Best,
-- 
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

Josh Cheek

unread,
Jan 2, 2010, 11:02:46 PM1/2/10
to
[Note: parts of this message were removed to make it a legal post.]

It appears the object has a reader for woe_id (based on
http://github.com/mattt/yahoo-geoplanet/blob/6c073d969191e1f03e7d5523713f742849443d11/lib/yahoo-geoplanet/place.rb)
which would mean you could do array.first.woe_id

Of course, you'll need to consider whether the array will always have one
object, and whether you want to always pull it from that object (ie can the
array return nil? or what if it returns five of these objects, do you still
only want the woe_id of the first?)

0 new messages