【发布时间】:2011-08-22 02:30:26
【问题描述】:
我想定义一个实例方法Date#next,它会在第二天返回。所以我做了一个DateExtension 模块,像这样:
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
使用它:
class Date
include DateExtension
end
调用d.next(:week) 方法会使Ruby 抛出错误ArgumentError: wrong number of arguments (1 for 0)。
如何使用 DateExtension 模块中声明的方法覆盖 Date 类中的默认 next 方法?
【问题讨论】: