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

at(時間) → 時間
[...]

timeで指定された値で新しい時間オブジェクトを作成します[...]

したがって、次のようなことが言えます。

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

Timeしたがって、 aを a に変換するにMyTimeは、 を呼び出すだけMyTime.atです。

于 2013-02-07T05:21:54.403 に答える