Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyハッシュ–定義、例、方法:究極のガイド

Rubyハッシュとは何ですか?

ハッシュは、UNIQUEキーと値のペアの形式でデータを格納するために使用されるデータ構造です。配列とは異なり、数値インデックスはありません。キーを使用してハッシュ値にアクセスします。

例にはが含まれます :

  • 国名とそれに対応する国コードのリスト(ES⇾スペインなど)
  • 辞書。すべての単語に可能な定義のリストがあります
  • ドメイン名とそのIPアドレス

Rubyプログラムでハッシュを使用すると、適切な状況で使用するとコードを高速化できます。

言い換えれば

辞書のような形式の(または変換できる)データがあり、キーと関連する値でデータをグループ化できます。

ハッシュを作成する方法

わかりました。

ハッシュとは何かという一般的な考え方はわかりますが、どのようにハッシュを作成しますか?

このように

{}

それは空のハッシュです!

3つのキーと値のペアを持つハッシュは次のようになります

{ a: 1, b: 2, c: 3 }

ここでa はキーであり、1 そのキーに対応する値です。キーと値のペアがコンマで区切られていることに注意してください。

一般的なハッシュメソッドを使用して、Rubyプロジェクトでハッシュを使用する方法を見てみましょう。

Rubyハッシュに値を格納する

すでに見てきたように、初期値のセットを使用してハッシュを作成できます。

別の例です

fruits = { coconut: 1, apple: 2, banana: 3 }

もう1つのオプションは、既存のハッシュに新しい値を追加することです。

このように

fruits[:orange] = 4

これは:orangeです ハッシュキーとして、および4 対応する値として。

:orangeという単語の前にコロンがあるのはなぜですか 値にアクセスし、orange:という単語の後にアクセスする場合 ハッシュを作成するとき?これは、ハッシュロケットなしでハッシュを作成できるより優れた構文です(=> )シンボル。これは有効ですが、古い方法です。

値は任意のRubyオブジェクトにすることができます。

含む

  • 文字列
  • 整数と浮動小数点数
  • 配列

キーは何でもかまいませんが、記号(:bananaなど) )&文字列は、最も一般的な種類のキーです。

覚えておいてください…

キーは一意であり、:orangeを1つだけ持つことができます キー、または1つの:apple キー。

同じキーを2回追加すると、その値が変更されます。

ハッシュから値にアクセスする方法

キーでハッシュにアクセスします。

値に直接アクセスする必要がある場合は、ハッシュがデータの適切な構造ではない可能性があります。

fruits[:orange]
# 4

これがハッシュの要点であり、キーでアイテムをすばやく検索する

キーが存在しない場合は、nilを取得します 。

fruits[:peach]
# nil

別の方法として、fetchを使用できます メソッド。デフォルト値を指定できます。

fruits.fetch(:peach, 0)

fetchを使用する場合 デフォルト値(2番目の引数)がない場合、RubyはKeyErrorを発生させます 例外。

不足しているキーがわかるので便利です。

2つのRubyハッシュをマージする方法

2つのハッシュを取得して、それらを新しいハッシュにマージできます。

これはどのような方法ですか?

まあ、これを推測するのは難しいことではありません。メソッドの名前はmergeです。 。

使用方法は次のとおりです

defaults    = { a: 1, b: 2, c: 3 }
preferences = { c: 4 }

defaults.merge!(preferences)
# {:a=>1, :b=>2, :c=>4}

キーは一意であるため、注意してください 、新しい値は古い値を上書きします。

この事実は、ユーザーが独自のハッシュを渡すことでオーバーライドできる「デフォルト」ハッシュを作成するなど、興味深いソリューションに使用できます。

キーのマージ方法をさらに制御する必要がある場合は、ブロックを渡すことができます。

このように

defaults.merge!(preferences) { |key, old, new| [old, new].max }

old defaultsからの値です 、およびnew preferencesからの値です 。

1つのキーに複数の値

辞書で…

単語は一意ですが、複数の値(定義)を持つことができます )それらに関連付けられています。

これはRubyで実行できます!

dictionary = {
  opportunity: [
    "a set of circumstances that makes it possible to do something",
    "a situation or condition favorable for attainment of a goal"
  ],
  creativity: [
    "the use of imagination or original ideas to create something new",
    "the ability to create",
    "the process where new ideas emerge from combining existing ideas in new ways"
  ]
}

dictionary[:creativity][1]

dictionary[:creativity] 配列と[1]を提供します その配列から2番目の要素を取得します。

言い換えれば

キーはシンボルであり、値は配列です。ハッシュにアクセスすると、他の配列と同様に、通常アクセスする配列が返されます。

ハッシュを並べ替える方法

配列を並べ替えることができます。しかし、ハッシュを並べ替えることもできることをご存知ですか?

sortするとき ハッシュ、キーでソートされています。

{ b: 1, a: 2 }.sort

# [[:a, 2], [:b, 1]]

ただし、値で並べ替えることもできます

{ c: 3, b: 1, a: 2 }.sort_by(&:last)

ハッシュの並べ替えから得られるものは別のハッシュではないことに気付くでしょう…

配列です!

ただし、to_hを使用して、この配列をハッシュに戻すことができます。 メソッド。

ハッシュからすべてのキーと値を取得する

すべてのハッシュキーのリストが必要な場合は、朗報です。そのための方法があります!

こちら

{ apple: 1, banana: 2 }.keys

# [:apple, :banana]

値を含む配列を提供するメソッドもあります

{ apple: 1, banana: 2 }.values

# [1, 2]

キーがハッシュに存在するかどうかを知りたい場合は、キーの配列を取得する代わりに、key?を使用します。 メソッド。

このメソッドはtrueを返します またはfalse 値。

概要

キーと値のペアで構成される便利なデータ構造であるRubyハッシュについて学習しました。また、キーでハッシュにアクセスする方法と、新しいデータをハッシュに保存する方法も学びました。

次に、irb(またはpry)を開いて、ハッシュで遊び始めます!

読んでくれてありがとう🙂


  1. Ruby開発者のための時間計算量への決定的なガイド

    時間計算量は、コンピュータサイエンスから学ぶことができる最も興味深い概念のひとつであり、それを理解するのに学位は必要ありません! 特定のアルゴリズムやプログラムが遅い理由を確認するのに役立つので興味深いです &それをより速くするためにあなたは何ができますか。 これを独自のコードに適用できます。 これはすべての派手なアルゴリズムを超えて これは、この記事の後半で説明するように、コンピュータサイエンスの本にあります。 しかし、最初に、何が遅いのか、何が速いのかについて話す必要があります。 遅いvs速い 150ミリ秒(ミリ秒)で100万個の数値を並べ替えるのは遅いですか、それとも速いですか

  2. Rubyの配列クラスの使用方法(例+便利なメソッド)

    アレイとは何ですか? 配列は組み込みのRubyクラスであり、0個以上のアイテムのリストを保持します 、およびこれらすべてのアイテムを簡単に追加、アクセス、およびループするのに役立つメソッドが含まれています。 配列が存在しない場合は多くの変数を使用する必要があるため、これは便利です。 例 : a =1b =2c =3 しかし、代わりに、あなたはそうすることができます : 番号=[1、2、3] 最良の部分は? 配列内には何でも入れることができます! いいね : 数字 文字列 より多くのアレイ! (それは多次元配列になります) アレイを最大限に活用できるように、アレイについ