How do I make variables defined in a method accessible on another method?

Team,

I would like to initialize some variables/arrays in a method, and access
them within another method.
For instance,

class My_Class

     def init_method(size)
          arr = Array.new(size)
          index = 1
     end # End method

    def print_method
       p arr
       p index
    end # End method

end # End class

my_obj = My_Class.new()
my_obj.init_method 10
my_obj.print_method

When I attempt to execute this code, I receive the error:

ruby My_Class
My_Class:9:in `print_method': undefined local variable or method `arr' for
#<My_Class:0x28ee87c> (NameError)
        from My_Class:17

I know the reason why it is happening, but I don't know how to access a
variable from another method, if there is a way.

Thank you

Victor

Use instance variables!

class Example
  def init(size) # why u arent using initialize?
    @arr = Array.new
    @index = -1
  end

  def print_method
    p @arr
    p @index
  end
end # class Example

···

Am Sun, 4 Nov 2007 12:51:19 +0900 schrieb "Victor Reyes" <victor.reyes@gmail.com>:

class My_Class

     def init_method(size)
          arr = Array.new(size)
          index = 1
     end # End method

    def print_method
       p arr
       p index
    end # End method

end # End class

my_obj = My_Class.new()
my_obj.init_method 10
my_obj.print_method

class My_Class
  def initialize(size)
    @arr = Array.new(size)
    @ind = 1
  end

  def print_method
    p @arr
    p @ind
  end
end

my_obj = My_Class.new(10)
my_obj.print_method

Harry

···

On 11/4/07, Victor Reyes <victor.reyes@gmail.com> wrote:

Team,

I know the reason why it is happening, but I don't know how to access a
variable from another method, if there is a way.

--
A Look into Japanese Ruby List in English

First, thank you to Markus, Harry and 7stud for your help.
I truly appreciate it.

Markus, answering your question "why u arent using initialize?" SIMPLE: I
didn't know how to use it.

Again, Thank you all!

Victor

···

On 11/3/07, Victor Reyes <victor.reyes@gmail.com> wrote:

Team,

I would like to initialize some variables/arrays in a method, and access
them within another method.
For instance,

class My_Class

     def init_method(size)
          arr = Array.new(size)
          index = 1
     end # End method

    def print_method
       p arr
       p index
    end # End method

end # End class

my_obj = My_Class.new()
my_obj.init_method 10
my_obj.print_method

When I attempt to execute this code, I receive the error:

ruby My_Class
My_Class:9:in `print_method': undefined local variable or method `arr' for
#<My_Class:0x28ee87c> (NameError)
        from My_Class:17

I know the reason why it is happening, but I don't know how to access a
variable from another method, if there is a way.

Thank you

Victor

Markus Schirp wrote:

class Example
  def init(size) # why u arent using initialize?
    @arr = Array.new
    @index = -1
  end

Just to flesh out that comment. Examine this class:

class Dog
  def init_method(age, weight)
    @age = age
    @weight = weight
  end

  def show
    puts @age, @weight
  end
end

d = Dog.new
d.init_method(2, 20)
d.show

--output:--
2
20

However, when you create an object, ruby *automatically* calls a method
called initialize() in the object's class:

class Dog
  def initialize(age, weight)
    @age = age
    @weight = weight
  end

  def show
    puts @age, @weight
  end
end

d = Dog.new(2, 20)
d.show

--output:--
2
20

···

--
Posted via http://www.ruby-forum.com/\.