【Ruby入門】ハッシュ(hash)をeachで取り出す!その他ハッシュの応用について
  • facebookページ
  • twitterページ
  • 2017.10.17

    【Ruby入門】ハッシュ(hash)をeachで取り出す!その他ハッシュの応用について

    【Ruby入門】ハッシュとシンボルの基本」にて、ハッシュの基本を解説しました。そこで本記事ではそれに続き、より実践的なハッシュの使い方について解説します。

    ハッシュに値をセットしたあと、それをどう使うか(つまりどうやって取り出すか)が問題となります。

    ハッシュもオブジェクトです。となると、配列と同じようにハッシュもeachメソッドが使えます。ハッシュ.eachで取り出すことが可能です。本記事ではその方法を解説します。

    その他、本記事ではハッシュから配列とその逆への変換ハッシュの入れ子(ハッシュの中にハッシュ)ハッシュの便利な表示方法を解説します。

    なお、一般的にハッシュのキーにはシンボルを使います。本記事でもそれに従い、キーはすべてシンボルを使います。シンボルとは何?とお忘れの方は、冒頭のリンクより前の記事を開き、読みなおすことをおすすめします。

    ハッシュをeachで取り出す

    冒頭でふれたように、配列で出てきたeachですが、ハッシュにも使えます。

    [書式]

    配列のeachと異なり、キーと値を取り出さなくてはいけないので、ブロック変数はkeyとvalueの2つになります。

    [実行結果]

    ブロック変数「|key, value|」で取り出せるのですが、putsで表示するときは文字列に変換しなくてはなりません。よって上記プログラムではキーに.to_sメソッドを使って文字列に変換しています。

    今度は、式展開を使って内容を表示させてみましょう。

    先ほどと同じ結果が得られます。

    式展開を使うとto_sが必要ないことも注目してください。

    キーを指定して削除する

    要素を削除するときは、deleteを使います。

    [実行結果]

    :user1を削除できました。

    条件を指定して削除することも可能です。

    [実行結果]

    条件をブロックで渡して、満たすものだけ削除できました。

    ハッシュから配列、その逆

    to_aメソッドやto_hメソッドを使い、ハッシュから配列、配列からハッシュへ相互に変換する方法を解説します。

    まずはハッシュから配列への変換です。

    [実行結果]

    一体何が起こったのかお分かりでしょうか?

    1つの大きい配列に、2つの小さい配列が入れ子で入っています。つまり、ハッシュのキーと値をセットとした、1つの小さな配列になっています。

    ハッシュを配列にできるのなら、逆の考え方もできますよね。

    つまり、配列の入れ子をハッシュにできそうです。

    やってみましょう。

    [実行結果]

    先ほどの実行結果をそのまま使い配列を作成し、to_hメソッドでハッシュ化できました。

    ハッシュの中にハッシュ

    もっと複雑なハッシュを見てみましょう。ハッシュの中にハッシュを入れることも可能です。

    例えば、以下のような構成を考えます。

    これをハッシュで実装します。

    [実行結果]

    ハッシュを多重で定義できました。

    ppメソッド

    ハッシュが複雑になると、putsメソッドやpメソッドで表示させても見づらいです。そんなときはppメソッドを使うと便利です。

    先ほどの例を使います。

    [実行結果]

    ちょっとだけ見やすくなりました。

    まとめ

    本記事では、ハッシュの応用的な使い方を解説しました。

    ぜひハッシュの考え方をマスターし、配列とハッシュのいずれを使うのか適切な判断ができるようになってくださいね!


    他のRuby入門記事はこちら

    【Ruby入門】Rubyとは何か?学習方法や将来性まで考えました!

    【Ruby入門】Ruby on Railsをやってみよう!

    【Ruby入門】環境構築(Mac/Win)

    【Ruby入門】nokogiriでスクレイピング

    【Ruby入門】データベース

    【Ruby入門】gemとライブラリ

    【Ruby入門】エラーと例外処理

    【Ruby入門】モジュール(module)とMix-in

    【Ruby入門】Procクラスとラムダ(lambda)

    【Ruby入門】ブロック

    【Ruby入門】メソッド

    【Ruby入門】クラスをコーディング(2) オブジェクト指向

    【Ruby入門】クラスをコーディング(1) classを作る

    【Ruby入門】クラスの継承、オーバーライド

    【Ruby入門】クラスとオブジェクト

    【Ruby入門】ディレクトリ(フォルダ)の作成、削除

    【Ruby入門】ファイルの移動、コピー、削除

    【Ruby入門】入力と出力

    【Ruby入門】Rubyの正規表現

    【Ruby入門】正規表現で置換する

    【Ruby入門】正規表現とは何か?

    【Ruby入門】文字列の結合などの操作

    【Ruby入門】CSVの基本と操作

    【Ruby入門】JSONの基本と操作

    【Ruby入門】乱数(Random)などの数値計算用クラスや端数処理

    【Ruby入門】日付の基本と操作(Time, Date)

    【Ruby入門】数値の数え上げ「upto」と四捨五入

    【Ruby入門】文字列の標準ライブラリnkfとヒアドキュメント

    【Ruby入門】数値の基本とメソッド (timesメソッド他)

    【Ruby入門】ハッシュ(hash)をeachで取り出す!その他ハッシュの応用に

    【Ruby入門】ハッシュ(hash)とシンボルの基本

    【Ruby入門】文字列の基本と表示メソッド

    【Ruby入門】Rubyの繰り返しを極める!様々な繰り返しのバリエーション

    【Ruby入門】最初はこれだけ!まずは手を動かしたい人のRuby入門

    【Ruby入門】ifとelseについて

    【Ruby入門】配列と操作(基本編)

    【Ruby入門】eachメソッドの使い方と応用例


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア

    関連ワード

    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE