の構文を使用するのではなく、class << self
の定義の中でconst_missing
と他のクラスメソッドを定義すると、Rubyの動作が大きく混乱します。"class << self"定義内に定数と "const_missing"がありません
私はこのような何かをしようとしていた。
class Foo
class << self
def foo
puts MISSING
end
def const_missing(name)
puts "#{name} missing"
end
end
end
Foo.foo
私は主にクラスメソッドを定義するためにclass << self
構文を使用します。しかし、期待どおりに動作しませんでした。 const_missing
は呼び出されません。上記の結果はNameErrorになります。
def self.foo
puts MISSING
end
def self.const_missing(name)
puts "#{name} missing"
end
私はclass << self
構文は、クラスメソッドを定義するだけで、別の方法が、def self.foo
と完全に同等であることを考えた:これは期待どおりに動作よう
両方の方法を定義しますか?私は上記のMRI 1.8.7、1.9.2、JRuby 1.5.6をテストしました。だから明らかに私はここに何かを逃しているのですか?
いずれのヒントも大歓迎です。
おかげで、マーティン
どうもありがとう、LBG:この場合、あなたはそれを行うには
const_missing
、二つの方法にeigenclass上のクラスメソッドを定義する必要があります。私は 'class << self'がクラスの固有クラスを開くことを知っていました。しかし、クラスメソッドは固有クラスのインスタンスメソッドなので、このように動作すると思っていました。しかし、固有クラスから参照される定数は、クラス自体から参照される定数と同じではないことは完全に意味します。時にはこのすべてのことが私の頭を回転させる:) – martido