누구를 통해 인스턴스 속성에 접근 사이의 차이를 설명 할 수 self.attribute
에 의해를 @attribute
?
답변:
self.attribute
메서드를 호출합니다 attribute
. 인수를 사용
self.attribute = value
하여 메서드 attribute=
를 호출합니다 value
.
@attribute
및 @attribute = value
/ 얻을 인스턴스 변수의 값을 설정@attribute
.
그래서 기본적으로 그들은 완전히 다른 두 가지입니다.
그러나 호출 attr_accessor :attribute
하면 attribute
반환 @attribute
할 메서드 attribute=(value)
와 설정할 메서드 를 정의합니다 @attribute = value
. 따라서이 경우 차이가 없습니다.
"인스턴스 변수에 직접 액세스하는 것은 접근 자 메서드를 사용하여 액세스하는 것보다 약 2 배 빠릅니다."
확인 : https://www.greyblake.com/blog/2012-09-01-ruby-perfomance-tricks/
self.
있더라도 일반적으로 사용하는 것이 좋습니다 (getter / setter 메서드를 작성하지 않는 한) . 이렇게하면 인스턴스 변수를 가져 오거나 설정하는 것 이상을 수행하도록 나중에 접근 자 메서드를 변경하는 경우 추가 리팩터링 작업 및 버그로부터 보호됩니다. (또는 다른 사람이 작업을 패치하거나 하위 클래스를attr_accessor