[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

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

Victor Reyes

11/4/2007 3:51:00 AM

Note: parts of this message were removed by the gateway to make it a legal Usenet post.

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

4 Answers

Markus Schirp

11/4/2007 4:22:00 AM

0

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

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

Harry Kakueki

11/4/2007 4:37:00 AM

0

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.

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


--
A Look into Japanese Ruby List in English
http://www.ka...

7stud --

11/4/2007 7:50:00 AM

0

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-....

Victor Reyes

11/4/2007 1:34:00 PM

0

Note: parts of this message were removed by the gateway to make it a legal Usenet post.

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
>