루비에서 다음루비 초기화 방법 키 해시 인스턴스 변수를 설정
제가model = Model.new(1,2,:A)
같은 클래스를 사용하고
class Model
attr_accessor :var1, :var2, :state
def initialize (x, y, key)
@var1 = x
@var2 = y
@state = every_state[:key] #this line produces the error
@every_state = {
:A => SateA.new,
:B => StateB.new,
:C => StateC.new,
:D => StateD.new
}
end
def select_state(key)
every_state[:key]
end
end
오류가 발생합니다 정의되지 않은 지역 변수 또는 메소드`every_state '
내가 자바 배경에서 오는 루비에 새로운 오전, 나는 승 hash()로부터 특정의 초기 상태를 선택하기 위해서, initialize 메소드에 열쇠를 건네 줄 수 있습니다 (here).
잘못된 방법으로 해시를 사용하고 있습니까? 아니면 초기화 메서드에서 완전히 제거하고 다른 메서드를 사용하여 설정해야합니까? 내 다른 생각은 내가 잘못 키에 대한 기호를 사용하고 있습니다.
또한 initialize 메서드 내에서 인스턴스 변수가 아닌 변수에 대해 작업하는 것이 직접적인 의미입니까? 예를 들어 초기화 내에서 해시를 인스턴스 변수로 선언하는 목적이 무엇인지 궁금합니다. ...
모든 아이디어를 환영합니다.
들여 쓰기가 잘못되었습니다.'@ every_state'는'# initialize'에 정의되어 있으므로 같은 레벨에서 들여 쓰기해야합니다. 또한 호출하기 전에'@ every_state'를 초기화해야합니다 - 호출 전에 초기화를 이동하십시오 ('@state = ...') – hrnt