2012-02-22 4 views
3

可能性の重複は何ですか:
Why isn't the eigenclass equivalent to self.class, when it looks so similar?
class << self idiom in Rubyクラス<<ルビーで自己

は、私は、このクラスがあります。

class Player < ActiveRecord::Base 
    before_save :set_slug 

    def remains 
    ((end_date - Date.today) + 1).to_i 
    end 

    def self.url 
    "Our_link_#{slug}" 
    end 

    class << self 
    def load_track_lists 
     #do somthing 
    end 
    end 
end 

を、私はクラスを理解しますインスタンスメソッドではなく、

class << self 
    def load_track_lists 
    #do somthing 
    end 
end 

は本当に混乱します。それは何ですか、それは以前の2つの方法とどのように違うのですか?

+0

@lucapette:それは複製のように見えますか?それらは似ていて関連していますが、重複はありません。 –

答えて

3

あなただけclass << selfブロック内のメソッドを定義する以上のものをやっている場合は説明したように2つの方法の間の微妙な違いがありますが、

def self.load_track_lists 
    #do somthing 
end 

として定義されていたかのように最終的な結果は基本的に同じですlinked questionでは、実際には現在のクラスを「開放して」クラスレベルのメソッドを定義しています。

0

これはself.urlメソッドと同じです。これは、基本的に、自己を置くことなく複数のメソッドを配置できるコンテナです。メソッド名の前におそらくこの例では役に立ちませんが、他のクラスではきれいにすることができます。

IMO開発者の好みです

関連する問題