我有一个RemoteFile
继承自路径名
class RemoteFile < Pathname
end
我创建了一个远程文件,并获取其父文件
irb> RemoteFile.new('.')
=> #<RemoteFile:.>
irb> RemoteFile.new('.').parent
=> #<Pathname:..>
除了在路径名中修补十几个方法之外,有没有办法让Pathname返回RemoteFiles?如果Pathname返回类型为self.class.new
的对象?
答案 0 :(得分:2)
到目前为止,这对我有用:
class Winpath < Pathname
def to_s
super.tr("/", "\\")
end
def +(other)
self.class.new super(other)
end
end
似乎+(其他)是你需要重载的唯一功能。
答案 1 :(得分:1)
您可以考虑委托给实际的Pathname
对象。看看this article。这样你就不必修补任何东西,并且由于委托,你可以用更安全,更可控的方式修改东西。
答案 2 :(得分:0)
实际上你可以重新打开Pathname类而不是继承它。