2017-02-13 6 views
1

名前のハッシュを初期化しました。ハッシュからキーペアを削除するためのユーザー入力を取得しようとしています。ここに私のコードは次のとおりです。プログラムを実行し、入力後ハッシュからキーペアを削除する(Ruby)実際に違いが生じない

group = {:sally => "Sally Samsonite", :johnny => "Johnny Jameson", :beth => "Beth Benitsky", :corinne => "Corinne Camelia"} 

    print "Please enter a name to remove #{group.keys} >" 
    group.except!(gets) 
    group.each do |key, value| 
     puts "#{value}" 
    end 

「:サリー」それはオリジナルだとハッシュが返されます。

Please enter a name to remove [:sally, :johnny, :beth, :corinne] >:sally 
Sally Samsonite 
Johnny Jameson 
Beth Benitsky 
Corinne Camelia 

どのように私は永久に要素を削除しますか?

答えて

2

gets最後に改行を含む文字列を返します。

あなたのキーはシンボルです。 ":sally\n"または"sally\n"という名前のキーがないので、それを削除してもハッシュの内容は変更されません。

以下を行う必要があります。

  • 存在
  • 場合は、「を取得します使用してシンボルに

group = {:sally => "Sally Samsonite", :johnny => "Johnny Jameson", :beth => "Beth Benitsky", :corinne => "Corinne Camelia"} 

print "Please enter a name to remove #{group.keys} >" 
group.delete(gets.chomp.sub(/^:/,'').to_sym) 
group.each do |key, value| 
    puts "#{value}" 
end 
+0

を変換接頭:を削除chomp

  • で改行を削除します。 chomp.to_sym 'はまだ削除されませんターミナル経由で入力したキー値。 編集: "gets.parameterize.to_sym"を使用して修正しました。 –

  • +0

    @SamLim:更新されました。このコードは、 "sally"と ":sally"を入力として使用できるようになりました。 –

    +0

    @MarkoAvlijaš1)なぜ私は? :) 2)あなたの質問に答える - いいえ、私はしませんでした。 –

    関連する問題