我想创建一个Time
的子类,让我们说MyTime
,这样我就可以定义(特别是格式化相关的)方法而不会污染Time
类。
class MyTime < Time; end
对于在Time
上定义的一些构造函数方法,我可以在MyTime
中使用它们,如下所示:
MyTime.now
但有时我需要根据MyTime
的实例创建一个Time
实例。例如,我想基于以下内容获得MyTime
的实例:
File.mtime(path_to_some_file)
这是一个Time
实例。构造函数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
。