それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

クラス・メソッドをインスタンス内から呼び出す

ruby でクラスに所属するメソッドを呼び出す。

クラスに所属するStaticなメソッドを呼び出したときに、クラス名を直接指定するのは不便だよね。

class A
   def  self.do 
       puts :do
   end
   def say
       A.do # クラス名が・・・
   end
end
a = A.new
a.say

self で参照する

self.class で参照すると楽ですね。

self.class.do

ついでに send も取り入れるともっと楽かも?

Object.send でメソッド名を sym か str で指定できるので、そっちを使っても便利かもしれない。

class A
   def  self.do 
       puts :do
   end
   def say
       self.class.send(:do)
   end
end
a = A.new
a.say

これで、むやみにインスタンスメソッドを生やさなくて済む。インスタンスメソッドは「インスタンス」を扱うようにしたいよねやっぱり。インスタンスが無くても動くような処理はクラス・メソッドに登録しておくと使い方を変えられるので意図が明確になる気がする。