Ruby의 인스턴스 대 클래스 메소드
클래스 및 인스턴스
인스턴스 및 클래스 메서드를 이해하기 위해 먼저 인스턴스와 클래스가 실제로 무엇인지 분석해 보겠습니다. 기본적으로 클래스는 인스턴스 모음입니다. 데이터베이스와 함께 생각해보면 클래스는 전체 테이블을 나타내고 인스턴스는 해당 테이블의 각 행을 나타냅니다.
인스턴스 대 클래스 메서드
이제 인스턴스와 클래스가 어떻게 관련되어 있는지 이해했으므로 메서드에 대해 이야기할 수 있습니다. 방법은 데이터베이스에서 세부 정보를 조작하고 외삽하는 데 사용하는 것입니다. 찾기, 정렬, 삭제 등의 방법을 만들 수 있습니다. 백만 달러짜리 질문은 "우리 방법이 클래스 전체에 영향을 주기를 원합니까, 아니면 우리 방법이 각 인스턴스에 영향을 주기를 원합니까?"가 됩니다.
수업 방법
메서드가 클래스 전체에 영향을 미치게 하려면 클래스 메서드를 작성해야 합니다. 클래스 메서드는 일반적으로 ClassName.method_name
와 같이 마침표로 표시됩니다. 이것은 우리의 "self"가 클래스라는 것을 알게 해주고, 그래서 우리의 코드는 다음과 같을 것입니다:
class ClassName
def self.method_name
ClassName.method
end
end
인스턴스 방법
메서드가 클래스의 각 인스턴스에 영향을 미치게 하려면 인스턴스 메서드를 작성해야 합니다. 인스턴스 메서드는 일반적으로 ClassName#method_name
와 같은 해시태그와 함께 표시됩니다. 이를 통해 "self"가 인스턴스임을 알 수 있으므로 코드는 다음과 같습니다.
class ClassName
def method_name
self.method
end
end
음, 알겠습니다. 하지만 여전히 혼란스럽습니다.
여전히 이 "자신"이 벅찬 느낌이 든다면 콘솔을 사용하여 테스트해 보는 것이 좋습니다. Flatiron에서 우리는 콘솔에서 우리의 방법을 테스트하기 위해 프라이 세션을 시작하도록 권장받았습니다. 클래스 메서드의 경우 ClassName.method_name
를 입력합니다. 인스턴스 메서드의 경우 테스트할 특정 인스턴스를 생각해야 합니다. 하나의 내장 케이스는 "첫 번째"인스턴스입니다. 그것은 테이블의 첫 번째 행이 될 것입니다. 따라서 콘솔에서 메서드를 테스트할 때 ClassName.first.method_name
를 입력할 수 있습니다.
결론
내가 스스로에게 여러 번 되풀이한 말을 남기고 가겠습니다: 클래스 메서드는 전체 클래스, 즉 전체 테이블에 영향을 미칩니다. 인스턴스 메서드는 클래스의 인스턴스, 즉 테이블의 행에 영향을 미칩니다.
Reference
이 문제에 관하여(Ruby의 인스턴스 대 클래스 메소드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/andreaesparza13/instance-vs-class-methods-in-ruby-4amj
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이제 인스턴스와 클래스가 어떻게 관련되어 있는지 이해했으므로 메서드에 대해 이야기할 수 있습니다. 방법은 데이터베이스에서 세부 정보를 조작하고 외삽하는 데 사용하는 것입니다. 찾기, 정렬, 삭제 등의 방법을 만들 수 있습니다. 백만 달러짜리 질문은 "우리 방법이 클래스 전체에 영향을 주기를 원합니까, 아니면 우리 방법이 각 인스턴스에 영향을 주기를 원합니까?"가 됩니다.
수업 방법
메서드가 클래스 전체에 영향을 미치게 하려면 클래스 메서드를 작성해야 합니다. 클래스 메서드는 일반적으로
ClassName.method_name
와 같이 마침표로 표시됩니다. 이것은 우리의 "self"가 클래스라는 것을 알게 해주고, 그래서 우리의 코드는 다음과 같을 것입니다:class ClassName
def self.method_name
ClassName.method
end
end
인스턴스 방법
메서드가 클래스의 각 인스턴스에 영향을 미치게 하려면 인스턴스 메서드를 작성해야 합니다. 인스턴스 메서드는 일반적으로
ClassName#method_name
와 같은 해시태그와 함께 표시됩니다. 이를 통해 "self"가 인스턴스임을 알 수 있으므로 코드는 다음과 같습니다.class ClassName
def method_name
self.method
end
end
음, 알겠습니다. 하지만 여전히 혼란스럽습니다.
여전히 이 "자신"이 벅찬 느낌이 든다면 콘솔을 사용하여 테스트해 보는 것이 좋습니다. Flatiron에서 우리는 콘솔에서 우리의 방법을 테스트하기 위해 프라이 세션을 시작하도록 권장받았습니다. 클래스 메서드의 경우
ClassName.method_name
를 입력합니다. 인스턴스 메서드의 경우 테스트할 특정 인스턴스를 생각해야 합니다. 하나의 내장 케이스는 "첫 번째"인스턴스입니다. 그것은 테이블의 첫 번째 행이 될 것입니다. 따라서 콘솔에서 메서드를 테스트할 때 ClassName.first.method_name
를 입력할 수 있습니다.결론
내가 스스로에게 여러 번 되풀이한 말을 남기고 가겠습니다: 클래스 메서드는 전체 클래스, 즉 전체 테이블에 영향을 미칩니다. 인스턴스 메서드는 클래스의 인스턴스, 즉 테이블의 행에 영향을 미칩니다.
Reference
이 문제에 관하여(Ruby의 인스턴스 대 클래스 메소드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/andreaesparza13/instance-vs-class-methods-in-ruby-4amj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)