3
ルビー1.8.7(2010-12-23パッチレベル330)[i686-darwin10.5.0]is_aを無効にする適切な方法は何ですか?とkind_of?
私に何か不足していますか?
module Mixin
def is_a?(o)
return false if o == Hash
super
end
alias_method :kind_of?, :is_a?
end
class Doc < Hash
include Mixin
end
puts Doc.new().is_a?(Doc) # => true
puts Doc.new().kind_of?(Doc) # => super: no superclass method `is_a?'
予想:
puts Doc.new().is_a?(Doc) # => true
puts Doc.new().kind_of?(Doc) # => true
puts Doc.new().is_a?(Hash) # => false
puts Doc.new().kind_of?(Hash) # => false
すべてがRubiniusのルビー誰にでも1.9.2p136
おそらく、それは分で私を打つでしょうが、あなたが見たいものを説明し、それとは異なる部分を指摘すれば助けになるでしょう。 Mixinがテストしているコードにどのような影響を与えているのか、独自の 'Doc2#is_a? 'メソッドがどのように違いを見ているのか分かりません。ハッシュを渡すことは決してありません! – Phrogz
私は '#=> superを取得しません:スーパークラスのメソッドは' is_a? '';私はRuby 1.9.2で4つの 'true'値を出力します。どのバージョンのRubyを使用していますか? 1.8.7? – Phrogz
「私は何かが欠けていますか?」はい。あなたがそれを実行するときに得られるものの例と、代わりに受け取ってもらいたいものの例。 –