Ruby で、Foo
Foo の大規模なコレクションをカタログ化できるクラスがあるとします。すべての Foo が緑色で球状であるというのは基本的な自然の法則であるため、次のようにクラス メソッドを定義しました。
class Foo
def self.colour
"green"
end
def self.is_spherical?
true
end
end
これは私がすることができます
Foo.colour # "green"
だがしかし
my_foo = Foo.new
my_foo.colour # Error!
my_foo
それは明白に緑色であるという事実にもかかわらず。
明らかに、 をcolour
呼び出すインスタンス メソッドを定義できますself.class.colour
が、そのような基本的な特性が多数あると扱いにくくなります。
欠落しているメソッドのクラスを試すように定義することでおそらくそれを行うこともできますがmethod_missing
、これが私がやるべきことなのか醜いハックなのか、それとも安全に行う方法なのかはわかりません (特に私は実際に ActiveRecord の下にいるため) Rails では、method_missing を使っていくつかの Clever Fun Stuff を実行していることを理解しています)。
あなたは何をお勧めします?