Instance variables


#1

Learning about instance variables and don’t understand why the
instance variable “name” in the code example below is not visible
where as “title” is. Could someone explain this to me and why I hadto
use the “self.get_name()” method (which I don’t understand since I
pulled it off the net) to get the value out of name?

Thanks

class InstanceVariables
@name = “Steve”

def initialize()
@title = “Software Eng”
end

def self.get_name
@name
end

def get_name
self.class.get_name # Why can’t I just return @name?
end

def get_title
@title
end

def show_vars
puts “name: #@name, title: #@title” # name is not set, at least
that I can tell.
end
end

obj1 = InstanceVariables.new
puts obj1.get_name()
puts obj1.get_title()
obj1.show_vars()

Steve
Software Eng
name: , title: Software Eng


#2

On 18 Feb 2009, at 18:42, Steve wrote:

Learning about instance variables and don’t understand why the
instance variable “name” in the code example below is not visible
where as “title” is. Could someone explain this to me and why I hadto
use the “self.get_name()” method (which I don’t understand since I
pulled it off the net) to get the value out of name?

Classes are objects in ruby and can have instance variables, so when
you set @name = “Steve” where you have put it you’re create an
instance variable on the class rather than an instance variable on a
particular instance of the class.

Fred


#3

So what is the distinction between a class instance variable and a
class variable (ie @@name=“Steve”)?

On Feb 18, 1:56 pm, Frederick C. removed_email_address@domain.invalid


#4

On Feb 19, 12:50 am, Steve removed_email_address@domain.invalid wrote:

So what is the distinction between a class instance variable and a
class variable (ie @@name=“Steve”)?

mostly the odd scoping stuff which means that @@foo in an instance
method and @@foo in a class context refer to the same object.

Fred