我想创建 Time
的子类,比如说 MyTime
,这样我就可以定义(尤其是与格式相关的)方法,而不会污染 Time
类。
class MyTime < Time; end
对于 Time
上定义的一些构造函数方法,我可以在 MyTime
中使用它们,如下所示:
MyTime.now
但有时我需要基于 Time
实例创建 MyTime
实例。例如,我想要一个基于以下内容的 MyTime
实例:
File.mtime(path_to_some_file)
这是一个 Time
实例。构造函数 Time#new
不接受 Time
实例,因此我无法使用它。我该怎么做?
最佳答案
Time
类有一个 at
使用 Time
实例作为参数的类方法:
at(time) → time
[...]Creates a new time object with the value given by time, [...]
所以你可以这样说:
>> class MyTime < Time; end
>> mt = MyTime.at(File.mtime(path_to_some_file))
>> mt.class
=> MyTime
因此,将 Time
转换为 MyTime
只需调用 MyTime.at
。
关于ruby - 初始化 `Time`的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14743760/