1

RemoteFileパス名から継承するものがあります

class RemoteFile < Pathname
end

リモートファイルを作成し、その親を取得します

    irb> RemoteFile.new('.')
     => #<RemoteFile:.> 
    irb> RemoteFile.new('.').parent
     => #<Pathname:..>

Pathnameで12個のメソッドにモンキーパッチを適用する以外に、PathnameにRemoteFilesを返すようにする方法はありますか?Pathnameがタイプのオブジェクトを返した場合、より適切に機能しませんself.class.newか?

4

3 に答える 3

2

これはこれまでのところうまくいきました:

class Winpath < Pathname
   def to_s
      super.tr("/", "\\")
   end

   def +(other)
      self.class.new super(other)
   end
end

+(other) は、オーバーロードする必要がある唯一の関数のようです。

于 2013-01-30T12:37:53.123 に答える
1

Pathname実際のオブジェクトに委任することを検討できます。この記事をご覧ください。このようにすると、モンキーパッチを適用する必要がなくなり、委任により、より安全で制御可能な方法で変更を加えることができます。

于 2011-09-16T23:21:29.043 に答える
0

実際、継承する代わりに Pathname クラスを再度開くことができます。

于 2011-09-16T22:56:09.413 に答える