Problem is, it always print 0 0… as if the random wouldn’t work, but I
have test the random outside this method (calling it in the first
method,
not the second one), but the second method is one I need cos I use it
too
many times and with different instance variables
It’s not clear to me what you’re trying to do here. You want a method
that
will set arbitrary variables to random numbers? That’s a wild guess.
What
you’re actually doing when you call call_other is passing it the values
in @xpos and @ypos (which is 0 and 0 initially). Then, in call_other,
you’re
taking those 0s in with var1 and var2. Then you’re over-writing var1 and
var2 with random numbers (0s are lost, as far as this method is
concerned)
and then… you exit. You’re leaving your @vars untouched because you’re
passing the values, not the variables themselves.
If “max” is always going to be the same, I’d make it a constant at the
class
level and then just have some look like this:
def some @xpos = rand MAX @ypos = rand MAX
end
If max won’t be the same all the time, make a method that figures it out
and
returns a random number based on it… An example will make more sense,
maybe.
def some @xpos = generate_random @ypos = generate_random
end
def generate_random
max = 9 # or whatever determines your max value
rand(max)
end
I hope that’s clear. Scope can be confusing sometimes. If I am too
rambly (I
hear that a lot), maybe someone with more experience will be more clear,
too.
@Andrew S., thanks instance_variable_set makes it’s work, but what if i
need the data inside too…
I think instance_variable_get? Check out RDoc Documentation
and
look in the right column for methods that start with instance_v. Or do a
find on _variable and see what turns up.
Ben
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.