Instance variable exists?

D

Detlef Reichl

Hi,

what is the preferred way to see if an object already includes a
instance variable?

for now i do something like:

@my_object.instance_variables.include? "var_name"



Cheers
detlef
 
S

SonOfLilit

Hi,

AFAIK it's the only way.

Question: Why does Object#instance_varialbe_get have no documentation?
It's behaviour isn't that clear in cases like
 
G

George Ogata

Hi Detief, Aur,

Hi,

AFAIK it's the only way.

There's also:

obj.instance_eval{defined?(@foo)}

As you're hopefully aware, though, it's probably not particularly
straightforward because it's discouraged in general. Peeking at an
object's instance variables is kinda intruding on its privacy. There
are some valid uses to be sure, but usually I think you're better off
providing accessors for anything of interest outside the object.
Question: Why does Object#instance_varialbe_get have no documentation?
It's behaviour isn't that clear in cases like

Where are you looking? "ri instance_variable_get" gives me docs.

Regards,
George.
 
S

SonOfLilit

aur-sarafs-computer:~ aursaraf$ ri Object#instance_variable_get -T
------------------------------------------- Object#instance_variable_get
instance_variable_get(ivarname)
 
G

George Ogata

aur-sarafs-computer:~ aursaraf$ ri Object#instance_variable_get -T
------------------------------------------- Object#instance_variable_get
instance_variable_get(ivarname)

g@bang:~$ ri -T instance_variable_get
------------------------------------------- Object#instance_variable_get
obj.instance_variable_get(symbol) => obj
------------------------------------------------------------------------
Returns the value of the given instance variable (or throws a
NameError exception). The @ part of the variable name should be
included for regular instance variables

class Fred
def initialize(p1, p2)
@a, @b = p1, p2
end
end
fred = Fred.new('cat', 99)
fred.instance_variable_get:)@a) #=> "cat"
fred.instance_variable_get("@b") #=> 99

g@bang:~$ ruby -v
ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-linux]

Maybe a version thing? (Just guessing.)

Regards,
George.
 
G

Giles Bowkett

FYI I get the same thing.
E:\Documents and Settings\Jason>ri instance_variable_get
------------------------------------------- Object#instance_variable_get
instance_variable_get(ivarname)
------------------------------------------------------------------------
(no description...)

E:\Documents and Settings\Jason>ruby -v
ruby 1.8.5 (2006-08-25) [i386-mswin32]

same here:

<giles-computer:giles> [02-18 08:00] ~
! ri Object#instance_variable_get -T
------------------------------------------- Object#instance_variable_get
instance_variable_get(ivarname)
------------------------------------------------------------------------
(no description...)
<giles-computer:giles> [02-18 08:00] ~
! ruby -v
ruby 1.8.5 (2006-08-25) [i686-darwin8.8.3]

haven't had any trouble with ri on this machine before, that I remember.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,234
Messages
2,571,179
Members
47,811
Latest member
GregoryHal

Latest Threads

Top