0

私が望むのは、メソッド「ok?」を追加することです。ハッシュに変換されますが、クラス 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::Hashとは関係のない新しいクラスを作成しHashます。::Hashグローバル スコープではなく モンキー パッチが必要な場合は、こちらをご覧ください: http://yehudakatz.com/2010/11/30/ruby-2-0-refinements-in-practice/

ただし、これは ruby​​ 2.0.0 でのみ使用できます。

于 2013-03-07T09:58:26.520 に答える