0

如果我想要添加方法“好吗?” 进入散列,但仅适用于 C1 类及其子类。怎么做?例如

class C1
 class Hash
   def ok?
      return 'nested hash ok'
   end
  end
 def m1
    return Hash.new.ok?  #works
 end
 def m2
    return {}.ok? #not works
 end
end


<<In other file>>
class C2 < C1
 def m1_1
    return {}.ok?   #not works
 end
end

如何添加“{}.ok?” 只是在 C1 中,它是 C2 的子类,每个文件中都不需要模块,但有点像 inhirt

4

1 回答 1

0

这不会添加新方法::Hash

class C1
  class Hash
    def ok?
      return 'nested hash ok'
    end
  end
end

它创建了一个C1::HashHash. 如果您想修改补丁::Hash但不在全局范围内,请查看以下内容:http: //yehudakatz.com/2010/11/30/ruby-2-0-refinements-in-practice/

但是,这仅在 ruby​​ 2.0.0 中可用。

于 2013-03-07T09:58:26.520 回答