2

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

class MyTime < Time; end

对于在 上定义的一些构造方法Time,我可以MyTime像这样使用它们:

MyTime.now

但有时我需要MyTime基于Time. 例如,我想要一个MyTime基于的实例​​:

File.mtime(path_to_some_file)

这是一个Time例子。构造函数Time#new不接受Time实例,所以我不能使用它。我该怎么做?

4

1 回答 1

3

该类Time有一个将实例作为参数的at类方法:Time

在(时间)→ 时间
[...]

使用 time 给定的值创建一个新的时间对象 [...]

所以你可以这样说:

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

因此,将 a 转换Time为 aMyTime是一个简单的调用问题MyTime.at

于 2013-02-07T05:21:54.403 回答