仅为类及其子类添加哈希方法

时间:2013-03-07 03:57:25

标签: ruby-on-rails class

如果我想要的是添加方法“好吗?”哈希,但只适用于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&amp;它是每个文件中不需要模块的子类C2,但是像inhirt

这样的某种方式

1 个答案:

答案 0 :(得分:0)

这不会向::Hash

添加新方法
class C1
  class Hash
    def ok?
      return 'nested hash ok'
    end
  end
end

它会创建一个与C1::Hash无关的新类Hash。如果你想修补补丁::Hash而不是全局范围,请看看: http://yehudakatz.com/2010/11/30/ruby-2-0-refinements-in-practice/

但是,这仅适用于ruby 2.0.0。