2016-10-11 5 views
-2

downcase 대문자 또는 대소 문자가 혼합 된 단어와 비교할 때 내 파서가 nil 값을 반환하기 때문에 구문 분석 옵션을 사용하여 소문자 형식의 기호 만 일치 시키려고했습니다.기호 해시를 구문 분석하는 방법

내가 [:ens, :ENS, :eNS, :enS ...] 같은 해시하고 싶지 않아요 :

opts.on("-i", "--instance [INSTANCE]", [:ens, :etu], "Selectionnez l'instance de Gitlab (etu, ens)") do |instance| 
    # puts instance.inspect 
    Options[:instance] = instance 
end 

예 :

이 가
./gitlabCollect -t my_token -k my_keyword -i ENS 
해시 반환하기 때문에

가 작동하지 않습니다 입니다 :

{:token=>"my_token", :keyword=>"my_keyword", :instance=>nil} 
+2

그래서 여기에 무슨 문제가 있습니까? –

+1

핸들러에서'[: ens, : etu]'옵션 정의를 제거하고 하향 케이싱을 처리 할 수 ​​있습니다. –

+0

다음과 같은 두 개의 심볼을 던져 보겠습니다 : instance => nil –

답변

0

그것은 것을 당신은 기호에 대한 몇 가지 사항을 이해하지 못하고, 문자에 기반한 해시에 매핑합니다. :sss != :Sss. 시도해보십시오 :sss.hash:Sss.hash irb/pry. 두 개의 다른 숫자로 매핑됩니다. 대소 문자를 구별 할 필요가없는 경우 항상 upcase 문자열로 변환 할 수 있습니다.

symbol1 = :sss 
symbol2 = :Sss 

symbol1.to_s.upcase == symbol2.to_s.upcase #true 
+0

문자열로 변환하려고했지만'Options [: instance] = instance'가'nil'을 반환하면 변환이 작동하지 않습니다. –