1

我有一个RemoteFile从路径名继承的

class RemoteFile < Pathname
end

我创建一个远程文件,并获取其父文件

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

除了在 Pathname 中修补十几个方法之外,还有什么方法可以让 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 回答