[解決済み] Rubyで既存のハッシュに追加する方法
質問
を追加することに関して
key => value
のペアを、Rubyで既存のpopulated hashに追加したいのですが、ApressのBeginning Rubyを読んでいる最中で、ちょうどhashの章を終えたところです。
私は、ハッシュで配列と同じ結果を得るための最も簡単な方法を見つけようとしています。
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 = { 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"}
ハッシュへの挿入は、1つずつ行うか、あるいは
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で数値の配列の合計を出すには?
-
[解決済み] RubyのNameError
-
[解決済み] ルビーオールウェイズ ラウンドアップ
-
[解決済み] あなたが提供した認証メカニズムはサポートされていません。AWS4-HMAC-SHA256を使用してください。
-
[解決済み] Rubyで中央値を計算する
-
[解決済み] ファイルの存在を確認する方法 [重複]について
-
[解決済み] Rubyの予期しないキーワードの終了、および予期しない入力の終了
-
ERRORの問題を解決します。rails のインストール時に gem ネイティブ拡張のビルドに失敗しました。
-
[解決済み] Ruby 1.8.7 ハッシュを文字列に変換する