我想创建一个Time
的子类,让我们说MyTime
,这样我就可以定义(特别是与格式相关的)方法,而不会污染Time
类。
class MyTime < Time; end
对于Time
上定义的一些构造函数方法,我可以在MyTime
中使用它们,如下所示:
MyTime.now
但有时我需要根据MyTime
的实例创建Time
的实例。例如,我希望基于以下内容获得MyTime
的实例:
File.mtime(path_to_some_file)
这是Time
个实例。构造函数Time#new
不接受Time
个实例,因此我无法使用它。我该怎么办?
答案 0 :(得分:3)
Time
类有一个at
类方法,它以Time
个实例作为参数:
在(时间)→时间
[...]创建一个新的时间对象,其值由 time ,[...]
给出
所以你可以这样说:
>> class MyTime < Time; end
>> mt = MyTime.at(File.mtime(path_to_some_file))
>> mt.class
=> MyTime
因此,将Time
转换为MyTime
只需调用MyTime.at
即可。