2012-02-22 10 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 

은 정말 혼란 스럽습니다. 그것은 무엇이며 이전의 두 가지 방법과 어떻게 다른가요?

+0

@lucapette : 중복 된 것으로 보입니까? 그것들은 유사하고 관련되어 있지만 중복되는 것은 아닙니다. –

답변

3

def self.load_track_lists 
    #do somthing 
end 

당신이 class << self 블록의 단지 정의하는 방법보다 더 많은 일을하는 경우 두 가지 방법 사이에 미묘한 차이가있다 설명

로 정의 된 것처럼 최종 결과는 기본적으로 동일 linked question에 있지만, 효과적으로 현재 클래스를 "열어"클래스 수준의 메서드를 정의하고 있습니다.

0

self.url 메소드와 다르지 않습니다. 그것은 기본적으로 당신이 자기를 넣지 않고도 여러 가지 방법을 사용할 수있게 해주는 컨테이너입니다. 메소드 이름 앞에. 아마 예제에서는 유용하지 않지만 다른 클래스에서는 꽤 깨끗 할 수 있습니다.

이 개발자의 기본 설정입니다.

관련 문제