복붙노트

[RUBY-ON-RAILS] 자기를 사용하십시오. 여부 .. 레일에

RUBY-ON-RAILS

자기를 사용하십시오. 여부 .. 레일에

지금 언젠가 루비 코딩 된 적이 있지만 사용할 때 이해가 안 :

def self.METHOD_NAME
end

아니면 그냥 :

def METHOD_NAME
end

어떤 레일 모델에서. "자기는"자바 민간 같이 수정인가? 사용하지 않을 때는 언제 그와를 사용한다? 엄청 고마워.

해결법

  1. ==============================

    1.

    def self.method_name
    end
    

    클래스 메소드를 정의합니다.

    def method_name
    end
    

    인스턴스 메소드를 정의한다.

    이것에 꽤 좋은 게시물입니다.

  2. ==============================

    2.무슨 수단의 빠른 설명 :

    무슨 수단의 빠른 설명 :

    루비에서는 특정 객체의 메소드를 정의 할 수 있습니다 :

    a = "hello"
    
    def a.informal
      "hi"
    end
    
    a.informal
    => "hi"
    

    무엇 당신이 할 때 발생하는 클래스는 String 객체 A는, "고스트"클래스, 일명 메타 클래스, 싱글 톤 클래스 또는 eigenclass로 변경 동급를 얻을 수 있다는 것입니다. 즉, 새로운 클래스의 슈퍼 클래스는 String입니다.

    또한, 내부 클래스 정의는, 자기는 그렇게, 클래스가 정의되는으로 설정

    class Greeting
      def self.say_hello
        "Hello"
      end
      #is the same as:
      def Greeting.informal
        "hi"
      end
    end
    

    어떻게이 일이 클래스 클래스이다 오브젝트 인사말이, 당신이 전화를 그렇게 할 때, 새로운 방법과 새로운 메타 클래스를 얻을 수 있다는 것입니다

    Greeting.informal
    => "hi"
    

    이 루비에서 클래스 메소드 같은 건 없다, 그러나 의미는 비슷하다.

  3. ==============================

    3.어느 하나를 사용하는 경우에 좋은 가이드 :

    어느 하나를 사용하는 경우에 좋은 가이드 :

    클래스 메소드를 만들 때, 어떤 클래스에 대해 신중하게 생각하거나에 속하는 모듈. 혹시 잡을 경우 자신이 다른 클래스에 혼합 할 수있는 모듈로 클래스에서 클래스 메소드, 인자를 코드를 복제.

  4. ==============================

    4.이러한 맥락에서 - 데프 self.method_name 일종의 자바 정적 방법에 동등한를한다 :

    이러한 맥락에서 - 데프 self.method_name 일종의 자바 정적 방법에 동등한를한다 :

    루비:

    class HexHelper
      def self.to_h(num)
        sprintf("%x", num)
      end
    end
    
    use: HexHelper.to_h(12345)
    

    자바:

    public class HexHelper
    {
      public static String toHex(int num)
      {
        return new PrintfFormat("%x").sprintf(num);
      }
    }
    
    use: HexHelper.toHex(12345)
    
  5. ==============================

    5.자기는 항상 현재 객체이다

    자기는 항상 현재 객체이다

    여기에 자신을 볼 때

    데프 self.method_name 종료

    당신은 정말 자기가 현재의 Class 객체이며, 인스턴스 메서드에 있지 않습니다.

  6. ==============================

    6.자기는 자바에서 this 키워드 같다. 그것은 현재 개체 인스턴스에 대한 참조입니다. 모델 코드가 수행하는 현재 오브젝트에 대한 조작 경우에, 당신은 아마 self.method_name의 지정이없는 기능을 필요 했어.

    자기는 자바에서 this 키워드 같다. 그것은 현재 개체 인스턴스에 대한 참조입니다. 모델 코드가 수행하는 현재 오브젝트에 대한 조작 경우에, 당신은 아마 self.method_name의 지정이없는 기능을 필요 했어.

  7. from https://stackoverflow.com/questions/386115/to-use-self-or-not-in-rails by cc-by-sa and MIT license