今日見つけたなぞのコード。 singleton = class << service; self; end serviceは任意のオブジェクト。どうもこれで、serviceの特異クラスを取り出しているらしい。 取り出したクラスは、クラスなので、「instance_methods」でメソッド一覧を取得したり、「define_method」でメソッドを定義したりできる。 「define_method」で定義したメソッドは、serviceでのみ有効になる。(他のserviceと同じクラスのインスタンスには影響しない。) # テスト用クラス class Kitten def meow( count ) puts "meow!"*count end end mii = Kitten.new kuro = Kitten.new # 特異クラスを取得 new_kitten = class << mii;