0

与えられた:

hash = { "value" => 4, "details" => "I am some details"}, {"value" => 5, "details" => "I am new details"}

次のようなことができますか:

hash.each do |key, value|
   puts "#{key} is #{value}"
end

次のようなものを取得します。

{ "value" => 4, "details" => "I am some details"} is {"value" => 5, "details" => "I am new details"} is

ハッシュ テーブル (マップ) を使用したくない場合は、どうすればよいでしょうか? データベースは論外です。{}ユーザーは、最初の 2 つと同じ詳細を入力する必要がある場合、最後に別の情報を追加し続けることができる必要があります。

4

3 に答える 3

2

ハッシュの配列を作成しました。これは、次のようにより明示的に行うことができます。

hashes = [{:value => "foo"}, {:value => "bar"}]

その後、追加できます

hashes << {:value => "baz"}

どのタイプの変数を使用しているのか疑問に思っている場合は、次のことができますvar.class

hash = { "value" => 4, "details" => "I am some details"}, {"value" => 5, "details" => "I am new details"}
hash.class #=> Array
于 2012-10-27T23:23:34.713 に答える
1

マップは、個別キーから値へのマッピングです。これを緩和する Mapのバリエーションがありますが、Ruby の Hashmap は標準の Map ADT に従います。

この場合、2 つの異なるハッシュ (それぞれ「値」と「詳細」を持つ) の配列が作成されます。

>  x = [1,2] # standard Array literal
   => [1,2]   
>  x = 1,2   # as in the posted code, no []'s, but ..
   => [1,2]  # .. the same: the =, production created the Array here!

したがって、これは のハッシュでhashはなく、配列 (2 つのハッシュ要素を含む) です:)

結果を以下と比較し、毎回でbあることに注意してください。nil

["one","two","three","four"].each do |a,b|
    puts ">" + a + "|" + b
end

これが、上記で説明したように配列を反復処理するときに "hash1.to_str is hash2.to_str is "と出力eachし、最初の引数のみに意味のある値 (ハッシュの 1 つ) が入力される理由です。

于 2012-10-27T23:16:43.403 に答える
0

この文脈で「データベースは問題外」という意味がわかりません。データ ストアを作成しているように聞こえますが、これまでのところ、関連する値を持つ数値 ID があるようです。

ハッシュはハッシュです。ハッシュに値を追加します。

h = { "4" => "foo" } # Initial values
h["5"] = "ohai"
h["6"] = "kthxbai"
于 2012-10-27T23:17:23.980 に答える