39 votes

Méthode de remplacement par une autre définie dans le module

Je veux définir une méthode d'instance Date#next qui retourne le lendemain. Donc j'ai fait un module DateExtension, comme ceci :

module DateExtension
  def next(symb=:day)
    dt = DateTime.now
    {:day   => Date.new(dt.year, dt.month, dt.day + 1),
     :week  => Date.new(dt.year, dt.month, dt.day + 7),
     :month => Date.new(dt.year, dt.month + 1, dt.day),
     :year  => Date.new(dt.year + 1, dt.month, dt.day)}[symb]
  end
end

Utilisation :

class Date
  include DateExtension
end

Appeler la méthode d.next(:week) fait que Ruby lance une erreur ArgumentError: wrong number of arguments (1 for 0). Comment puis-je remplacer la méthode next par défaut de la classe Date par celle déclarée dans le module DateExtension ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X