2016-10-11 7 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

私は2つのシンボルにエラーメッセージをスローさせます:instance => nil –

答えて

0

それはそうですあなたはシンボルに関するいくつかのことを理解していない、それらの文字に基づいてハッシュにマップする。 :sss != :Sss。 irb/pryで:sss.hash:Sss.hashを試してください。あなたは2つの異なる数字にマップされていることがわかります。大文字と小文字を区別する必要がある場合は、常に文字列に変換してupcaseとすることができます。

symbol1 = :sss 
symbol2 = :Sss 

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

文字列とdowncaseに変換しようとしましたが、 'Options [:instance] = instance'が' nil'を返して変換が機能しません。 –

関連する問題