2012-12-06 4 views
2

동일한 클래스 내의 setter에 쉽게 액세스하는 방법은 무엇입니까?쉬운 방법으로 클래스 설정기에 액세스하는 방법은 무엇입니까?

# some_file.rb , create a new object 
temperature = Measurement.new 'temperature', 36.6 

그리고 모델 :

내가이 전화를 가지고 말할 수 있습니다

# Measurements.rb , some model 
class Measurement 
    attr_accessor :value, :type 
    attr_reader :device, :title, :label 

    def initialize type, value 
    # This one works, but not trigger the setter 
    @type = type 
    # And this one trigger setter 
    self.type = type 
    end 

    def type= new_type 
    # do something very important 
    end  
end 

난 항상 내가이와 setter를 사용하려면 대신 @var =self.var =를 사용하기 위해 필요한이 평균을 하는가 변수를 클래스의 어디서나 이름을 바꾸지 않고? 더 이상 차이점이 없으며 세터를 추가하는 더 좋은 방법이 있습니까?

+0

코드가 혼란 스럽습니다. 생성자를 정의하기 전에는 인스턴스를 만들 수 없습니다. 코드의 순서가 잘못되었거나 코드의 두 부분을 인용한다는 점을 분명히해야합니다. – sawa

+0

고맙습니다. 실제로는 두 개의 다른 파일입니다. – lifecoder

답변

2

예, 항상 그렇습니다. 루비에서는 정말 세터와 같은 것이 없습니다. =으로 끝나는 그냥 방법. 그러나 구문 모호성 때문에 객체와 마침표가있는 setter는 항상 preface해야합니다. 그렇지 않으면 Ruby가 대신 로컬 변수에 대한 할당을 보게됩니다.

다른 말로하면 @blah은 원시 액세스이며 메소드를 트리거하지 않음을 기억하십시오 (완전히 진실하지는 않지만 일부 로깅 및 디버깅 호크 메소드가 있지만 결코 신경 쓰지 않습니다).

세터가 그렇게 중요하면 self.blah=으로만 생활하십시오.

관련 문제