rubyのクラスメソッドについて改めて考えた
ruby勉強会を社内で行うため、改めて色々見ていたらクラスメソッドに関する記事を読んだので復習の意味も込めてここに書く。
前回の記事で特異クラス、特異メソッドについて書きましたが、それに関連する話で、そもそもクラス定義の
class Dog end
は
Dog = Class.new do end
と置き換えられるとのこと。rubyではclassの宣言の意味するところとして、この例でいくとClassクラスのオブジェクトをDogというグローバル変数に入れる、という意味と同義らしい。
なので、例えば
class Dog #特異クラス方式のクラスメソッドの定義 class << self def run puts 'this method is class method.' end end end
と
Dog = class.new do def run puts 'this method is class method.' end end
これは同じ処理を別々の書き方で書いているということになります。
うーん、rubyって面白いなー