[解決済み] Rubyで既存のハッシュに追加する方法
質問
を追加することに関して
key => value
のペアを追加することに関して、私はApressのBeginning Rubyを読んでいる最中で、ちょうどハッシュの章を終えたところです。
私は、これが配列で行うのと同じ結果をハッシュで達成する最も簡単な方法を見つけようとしています。
x = [1, 2, 3, 4]
x << 5
p x
どのように解決するのですか?
ハッシュがあれば、キーで参照することで項目を追加することができます。
hash = { }
hash[:a] = 'a'
hash[:a]
# => 'a'
ここで、例えば
[ ]
は空の配列を作成します。
{ }
は空のハッシュを作成します。
配列は0個以上の要素を特定の順序で持ち、要素は重複することがあります。ハッシュは0個以上の要素を持ちます。 キーによって構成される キーは重複しないが、その位置に格納される値は重複する可能性がある。
Rubyのハッシュは非常に柔軟で、ほぼすべてのタイプのキーを持つことができます。このため、他の言語の辞書構造とは異なります。
ハッシュのキーの具体的な性質はしばしば重要であることを心に留めておくことが重要です。
hash = { :a => 'a' }
# Fetch with Symbol :a finds the right value
hash[:a]
# => 'a'
# Fetch with the String 'a' finds nothing
hash['a']
# => nil
# Assignment with the key :b adds a new entry
hash[:b] = 'Bee'
# This is then available immediately
hash[:b]
# => "Bee"
# The hash now contains both keys
hash
# => { :a => 'a', :b => 'Bee' }
Ruby on RailsはHashWithIndifferentAccessを提供し、SymbolとStringメソッドのアドレッシングを自由に変換することで、これを多少混乱させます。
また、クラス、数値、他のHashなど、ほぼすべてのものにインデックスを作成することができます。
hash = { Object => true, Hash => false }
hash[Object]
# => true
hash[Hash]
# => false
hash[Array]
# => nil
ハッシュは配列に変換することができ、その逆も可能です。
# Like many things, Hash supports .to_a
{ :a => 'a' }.to_a
# => [[:a, "a"]]
# Hash also has a handy Hash[] method to create new hashes from arrays
Hash[[[:a, "a"]]]
# => {:a=>"a"}
ハッシュへの挿入は、一度に一つずつ行うか、あるいは
merge
メソッドを使用してハッシュを結合することができます。
{ :a => 'a' }.merge(:b => 'b')
# {:a=>'a',:b=>'b'}
これは元のハッシュを変更するのではなく、新しいハッシュを返すことに注意してください。もし、あるハッシュを別のハッシュに結合したい場合は
merge!
メソッドを使います。
hash = { :a => 'a' }
# Returns the result of hash combined with a new hash, but does not alter
# the original hash.
hash.merge(:b => 'b')
# => {:a=>'a',:b=>'b'}
# Nothing has been altered in the original
hash
# => {:a=>'a'}
# Combine the two hashes and store the result in the original
hash.merge!(:b => 'b')
# => {:a=>'a',:b=>'b'}
# Hash has now been altered
hash
# => {:a=>'a',:b=>'b'}
StringやArrayの多くのメソッドと同様、このメソッドは
!
はそれが
インプレース
の操作であることを示します。
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] JavaでMD5ハッシュを生成するにはどうすればよいですか?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】Rubyで配列を反復処理するための「正しい」方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyの文字列の中から"˶‾‾‾˵"を削除するにはどうしたらいいですか?
-
[解決済み] Rubyでbeginとendのブロックを使わずにrescueを使うには?
-
[解決済み] このタスクを実行するには、Ruby と Sass をインストールし、PATH に配置する必要があります」という警告を解決するには?
-
[解決済み] Rubyのプライベートモジュールメソッド
-
[解決済み] Ruby: 文字列の最初の文字を取得する方法
-
[解決済み] ruby の rescue 節に複数のエラークラスを DRY に渡す方法
-
[解決済み] Rubyのオフ・ザ・レール
-
[解決済み] rspecでテストグループを無効にする?
-
[解決済み] Rubyで文字列が正規表現にマッチするかどうかをチェックする最も速い方法?
-
[解決済み] Rubyの基本的なプロジェクトはどのように設定するのですか?