2016-08-28 6 views
0

私は2つの部分の質問があり、あまり混乱しない場合は事前にお詫びします。私は空のハッシュにユーザーの入力を入れようとしています。私はあなたがそれに情報をプッシュする< <を使用して配列で知っている。これに相当するハッシュはありますか?Rubyがハッシュにプッシュ

2番目の部分:条件が満たされるまで同じ質問を繰り返していたとします。ユーザー入力は値になります。ユーザー入力ごとにキーを自動的に変更する方法/方法はありますか?したがって、それは次のようになります: {str1 => "例文字列"、str2 => "例文文字列2"、str3 => "例文文字列3"}

または、自分の?

もう1つの部分が混乱している場合は再び申し訳ありません。私は配列が良いだろうが、私が働いている少しの挑戦はハッシュを求めていることを知っている。

+3

私の質問はなぜそれをハッシュに保存したいのですか?あなたはキーについて本当に気にしないようですが、なぜ値を配列に格納しないのでしょうか? – Bustikiller

+0

2番目の質問に、ユーザーが 'arr = [" cat9 "、" dog12 "]'をユニークな数値部分で指定した場合は、次のような記述が可能です: 'my_hash = arr.each_with_object({}){| s 、h | "str9" => "cat9"、 "str12" => "dog12"} 'と入力します。あなたの最初の質問では、あなたが望むように動作するクラス 'Hash'にメソッド' << 'を定義することができます:' class Hash; def <<((k、v));自己[k] = v;終わり;終わり。上記のハッシュ 'my_hash'の場合、' my_hash << ["str40"、 "pig40"];ハッシュ#=> {"str9" => "cat9"、 "str12" => "dog12"、 "str40" => "pig40"} ' –

+0

ようこそスタックオーバーフロー。あなたはあなたの質問を改善することができます。 [質問する方法](http://stackoverflow.com/help/how-to-ask)の「質問をスマートにする方法」のリンクを参照してください。 – zhon

答えて

0

アレイでは、<<を使用して1つの要素をプッシュします。

ハッシュでは、1つの要素ではなく2つ(キーと値の両方)をトラッキングしています。例えばので

my_key = "foo" 
my_val = "bar" 
my_hash = {} 
my_hash[key] = val 

あなたがループ内でこれを行うことができ、確かに。

私はRubyMonkにこれについてもっと学ぶことを勧めますが、彼らのウェブサイトはダウンしています。だから私はthis gistをいくつかの例を示したり、単にrubyチュートリアルのハッシュセクションを読むことをお勧めします。ここで

0

Hash

hash[str1] = "example string" 
hash.merge!(str1 => "example string") 
1

にあなたのように、キーにインデックスを付ける気にしないのであれば、ハッシュstore(key, value)

hash = {} 
hash.store("first", 42) 
hash #=> {"first"=>42} 
0

をルビーに要素を追加する別の方法を追加するには2つの方法がありますハッシュは本質的にキーストアまたは値ストアです。Set

require 'set' 

set = Set.new 

set << gets.chomp 

セットはキーレスハッシュと似ていますが、順序付けられていないコレクションですが、セット内の要素のルックアップが迅速で、自動的に一意であるという副次的利点もあります。

ここで代替は、プレースホルダとしてキーと他の値として値をハッシュに何かを置くことです:

values = { } 

values[input.gets] = true 

これはセットのようですが、あなたドン場合は、おそらく少ない効率的な使用することです値について気にしない。

0

いいえ、それは配列ではないので、 '< <'は機能しません。

あなたはこれを使用する必要があります。

your_hash = {} 
hash_key = "x" 
hash_value = "y" 
your_hash[:hash_key] = hash_value 

それがすべてです。

関連する問題