2012-12-27 2 views
0

구현 한 모듈에 이상한 문제가 있습니다. 키 - 값 쌍의 해시를 정의한 다음 해시 값의 공백을 별표로 바꿉니다. 나는 통해 IRB에이 모듈을로드 할 때 :루비 1.8.7 모듈에서 해시 수정하기

load 'lib/protocols/myprotocol.rb' 

나는 다음과 같은 구문 오류 얻을 :

SyntaxError: ./lib/protocols/myprotocol/errors.rb:29: syntax error, unexpected '}', expecting ')' 
./lib/protocols/myprotocol/errors.rb:48: syntax error, unexpected kEND, expecting '}' 
from (irb):23:in `load' 
from (irb):23 

어떤 아이디어? 나는 다음 줄 주석 때 작동합니다

STATUS_CODES_MAP.each_value { |val| val.sub!(/\s/, 'Network error ' } 

그것은 모듈 내부 일정 해시 수정과 관련된 문제를 보인다,하지만 나는 정확한 이유를 알지 못한다. 구문이

STATUS_CODES_MAP.each_value { |val| val.gsub!(/\s/, '*' } 

STATUS_CODES_MAP.each_value { |val| val.gsub!(/\s/, '*') } 

답변

2
STATUS_CODES_MAP.each_value { |val| val.sub!(/\s/, 'Network error ' } 

대 : 여기에 모듈의 코드입니다 : 당신이 ) 누락처럼 사전에

module Protocols 
    module MyProtocol 
    STATUS_CODES_MAP = { 
     'AuthError' => 'Some error text', 
     'AnotherError' => 'Another error text' 
    } 
    STATUS_CODES_MAP.each_value { |val| val.gsub!(/\s/, '*' } 

    def error_from_response_status_code(status_code) 
     error_from_response_code(STATUS_CODES_MAP, status_code, 'Unknown protocol error!') 
    end 

    def error_from_response_code(errors, code, unknown_error_msg) 
     if errors.has_key?(code) 
     return Base.error_from_string(errors[code]) 
     else 
     RemoteError.new(unknown_error_msg) 
     end 
    end 

    module_function :error_from_response_status_code 
    end 
end 

덕분에

2

보인다 여기에 오류가 있습니다.)가 끝에 없습니다.

그 외에도 해시 값 수정시 문제가 없어야합니다.