Simple question: pointer equivalent in ruby

learned ruby a few months ago - is there a pointer equivalent in ruby
for setting the variable referenced by the return value of a function,
rather than just getting it?

like something that would allow you to do this.

def method
@value
end

@value = 5
method = 3
@value (should be 3)

···

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

Shea Barton wrote in post #954956:

OR even

value = 5
othervalue = value
othervalue = 3
value (should be 3)

That is precisely how ruby works by default. If you wanted othervalue to
just take the 'value' of value, i.e. 3, you would use this instead:

value = 5
other = value.dup
puts other #5
other = 3
puts other #3
puts value #5

···

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

Well generally for such situations you create setters, the example you gave
includes only a getter.

def method=(val)
  @value = val
end

that will then allow you to do method = 3 & that will in turn set @value to
3.

Although I don't see what exactly you wanted to know or what you're example
had to do with pointers...

···

--
Thanks & Regards,
Dhruva Sagar.

On Sun, Oct 17, 2010 at 21:29, Shea Barton <shea@sysach.com> wrote:

learned ruby a few months ago - is there a pointer equivalent in ruby
for setting the variable referenced by the return value of a function,
rather than just getting it?

like something that would allow you to do this.

def method
@value
end

@value = 5
method = 3
@value (should be 3)

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

what about the first example with the method?

···

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

I was confused about the way that ruby assigns and stores variables.

I fixed my problem using setters and getters.

thanks for the help

···

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

Hi --

···

On Mon, 18 Oct 2010, Parker Selbert wrote:

Shea Barton wrote in post #954956:

OR even

value = 5
othervalue = value
othervalue = 3
value (should be 3)

That is precisely how ruby works by default. If you wanted othervalue to
just take the 'value' of value, i.e. 3, you would use this instead:

value = 5
other = value.dup

Have you tried running that? :slight_smile:

David

--
David A. Black, Senior Developer, Cyrus Innovation Inc.

   The Ruby training with Black/Brown/McAnally
   Compleat Stay tuned for next event!
   Rubyist http://www.compleatrubyist.com

method = 3 will always assign to a local variable. If you really want to produce other side effects you need to do

self.method = 3

The topic seems to come up more frequently in recent time. I don't know whether Ruby community experiences increased migration from C++ developers or what the reason for this is. I believe the fact that people search for something call by reference in said language indicates that they do not have adjusted to the Ruby mindset yet. Shea, if you provide more context we might be able to help you understand how the problem you are trying to solve is usually solved in Ruby - without call by reference.

Kind regards

  robert

···

On 10/17/2010 06:22 PM, Shea Barton wrote:

what about the first example with the method?

David A. Black wrote in post #954969:

Hi --

value = 5
other = value.dup

Have you tried running that? :slight_smile:

Doh!

I really should have gone with a non nil, symbol, number example instead
=)

Shea Barton wrote:

I fixed my problem using setters and getters.

If you're now writing manual accessors (method, method=) definitely look
at attr_accessor, which will save you a lot of work.

···

On Mon, 18 Oct 2010, Parker Selbert wrote:

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