Methods with same name and parameters in a single class

I saw a sample code of Ruby where in a class can have two methods with
the same name and same set of parameters:

For example:

class method_versions
def method
puts “first”
end

def method
puts “second”
end
end

On executing: method_versions.new.method
it returns: second

Just in case I want to return the older version of the method, what
could be done?

On Thu, Aug 16, 2012 at 11:06 AM, Rubyist R. [email protected]
wrote:

def method
puts “second”
end
end

On executing: method_versions.new.method
it returns: second

Just in case I want to return the older version of the method, what
could be done?

Any time a method is defined, it overrides any previous definition of
a method by that name (regardless of the argument list of either
definition). The only way to access the previous definition is to
first save it in an alias:

class Method_versions
def method
puts “first”
end

alias :old_method method

def method
puts “second”
end
end

mv = Method_versions.new
mv.old_method
mv.method

So this means there is no versioning but overriding of the previous one.
Alias is nothing but a different name given to a method.

On Thu, Aug 16, 2012 at 11:55 AM, Rubyist R. [email protected]
wrote:

So this means there is no versioning but overriding of the previous one.

Right.

On Thu, Aug 16, 2012 at 11:06 AM, Rubyist R.
[email protected]wrote:

def method

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

Subclass it, then override it. If you want to call the original, invoke
super

class C
def m
‘the original’
end
end

class C2 < C
def m
“I override #{super}”
end
end

C2.new.m # => “I override the original”

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs