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?

···

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

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

···

On Thu, Aug 16, 2012 at 11:06 AM, Rubyist Rohit <lists@ruby-forum.com> wrote:

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?

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

···

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

···

On Thu, Aug 16, 2012 at 11:06 AM, Rubyist Rohit <lists@ruby-forum.com>wrote:

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?

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

Right.

···

On Thu, Aug 16, 2012 at 11:55 AM, Rubyist Rohit <lists@ruby-forum.com> wrote:

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