正在初始化“Time”的子类



我想创建Time的一个子类,比如MyTime,这样我就可以定义(尤其是与格式相关的)方法,而不会污染Time类。

class MyTime < Time; end

对于在Time上定义的一些构造函数方法,我可以在MyTime中使用它们,如下所示:

MyTime.now

但有时我需要在CCD_ 7的实例的基础上创建CCD_。例如,我想要一个基于的MyTime实例

File.mtime(path_to_some_file)

其为CCD_ 9实例。构造函数Time#new不接受Time实例,所以我不能使用它。我该怎么做?

Time类有一个at类方法,该方法以Time实例为参数:

在(时间)→时间
[…]

创建一个新的时间对象,其值由time,[…]给定

所以你可以这样说:

>> class MyTime < Time; end
>> mt = MyTime.at(File.mtime(path_to_some_file))
>> mt.class
=> MyTime

因此,将Time转换为MyTime只需调用MyTime.at即可。

最新更新