이 문서는 속성 접근자(attr_accessor
) 루비에서.
바쁘시다면 아래로 스크롤하세요.
다음을 설명하는 것으로 시작하고 싶기 때문입니다.
속성 접근자를 사용하는 이유 !
인스턴스 변수가 있는 클래스가 있고 이를 외부 세계에 노출하려고 한다고 가정해 보겠습니다.
어떻게?
메소드를 정의해야 합니다.
메서드만 인스턴스 변수에 액세스할 수 있습니다.
왜?
이렇게 하지 않으면 오류가 발생하기 때문입니다.
예시 :
class Food def initialize(protein) @protein = protein end end bacon = Food.new(21) bacon.protein # NoMethodError: undefined method `protein'
NoMethodError
protein
값을 요청할 때 발생하는 오류입니다. 적절한 설정 없이.
해결책은 무엇입니까?
이와 같이 자신만의 방법을 정의할 수 있습니다. :
class Food def protein @protein end end bacon.protein # 21
다른 OOP 언어에서는 이것을 "게터" 메서드라고 합니다. 인스턴스 변수의 값을 가져오는 메소드를 정의합니다.
값을 변경할 수도 있습니다.
이를 위해서는 다른 방법이 필요합니다 , 다음과 같이:
class Food def protein=(value) @protein = value end end bacon.protein = 25
값을 변경할 수 있도록 개체에 대한 포털을 열고 있다고 상상해 보십시오.
이것이 바로 이것이 하는 일입니다.
지금 :
이런 종류의 메서드를 정의하는 더 좋은 방법이 있습니까?
일종의 지름길 같은 건가요?
네!
있습니다 🙂
바로 attr_accessor
입니다. 들어옵니다.
Ruby attr_accessor 예제
attr_accessor
를 사용하여 이러한 메소드를 생성하도록 Ruby에 지시할 수 있습니다. .
방법은 다음과 같습니다. :
class Food attr_accessor :protein def initialize(protein) @protein = protein end end
이 줄을 보세요 :
attr_accessor :protein
이것은 다른 메소드를 생성하는 Ruby 메소드입니다.
어떤 방법?
이 예에서는 다음을 생성합니다.
protein
protein=
이것은 우리가 이전에 만든 것과 동일한 방법입니다...
하지만 이제 입력할 필요가 없습니다.
바로 가기입니다!
attr_accessor 대 attr_reader
attr_accessor
외에 , 다른 종류의 접근자도 있습니다.
정확한 세 가지 :
attr_accessor
attr_reader
attr_writer
이들의 차이점은 무엇입니까?
음, attr_accessor는 READER 및 WRITER 메서드를 모두 생성합니다.
attr_reader
독자만 생성합니다.-
attr_writer
작성자만 생성합니다.
즉 :
attr_reader
사용 값을 읽을 수만 있고 변경할 수는 없습니다. attr_writer
사용 값을 변경할 수만 있고 읽을 수는 없습니다.
여러 인스턴스 변수
여러 속성 메서드를 정의하고 싶으십니까?
할 수 있습니다.
하지만 올바른 구문을 사용해야 합니다.
좋아요 :
attr_reader :name, :value, :ready?
원하는 만큼 만들 수 있습니다.
동영상 튜토리얼 보기
요약
Ruby의 속성 접근자에 대해 배웠습니다! 3가지 메소드 세트(attr_accessor
, attr_writer
&attr_reader
) 클래스 외부에서 인스턴스 변수에 액세스하고 설정합니다.
이제 연습할 시간입니다.