Rubyで配列とハッシュテーブルを使う
Rubyの配列とハッシュはインデックス付きのコレクションです。
どちらも、キーでアクセスするオブジェクトのコレクションを保存します。配列のキーは整数です。ハッシュテーブルは、任意のオブジェクトをキーとして使用できます。配列とハッシュテーブルは、新しい要素を格納するために必要に応じてサイズを変更します。配列の要素へのアクセスは効率的であるが、ハッシュテーブルは柔軟である。配列やハッシュテーブルには、さまざまな種類のオブジェクトを格納することができる。
配列リテラル(角括弧で囲まれた要素の集合)を使用して、新しい配列オブジェクトを作成し、初期化することができます。配列オブジェクトの場合、角括弧の間にインデックスを指定すると、次の例のように個々の要素にアクセスすることができます。
a=[1,'cat',3.14] #Array with three elements
# Access the first element
a[0] -> 1
#set the third element
a[2] = nil
#Display this array
a ->[1,'cat',nil]
この例では、特殊な値nilが使われていることにお気づきでしょうか。多くの言語におけるnil(またはnull)の概念は、"no object"を意味します。Rubyでは、nilは他のオブジェクトと同じように、何も持っていないオブジェクトを表すために使われることを除けば、オブジェクトです。
時には単語の配列を作るのは面倒です。引用符やカンマがたくさん出てきます。幸いなことに、Rubyにはショートカットがあります。
a = ['ant','bee','cat','dog','elk']
a[0] -> "ant"
a[3] - > "dog"
#this is the same:
a = %w{ant bee cat dog elk}
a[0] -> "ant"
a[3] -> "dog"
Rubyのハッシュテーブルは配列に似ています。ハッシュ・リテラルは角括弧の代わりに括弧を使う。このリテラルは各項目に対してキーと値の2つのオブジェクトを提供しなければならない。
例えば、楽器と所属する交響曲のセクションを対応付けるには、次のようなハッシュリテラルを使います。
inst_section = {
'cello' => 'string',
'clarinet' => 'woodwind',
'drum' => 'percussion',
'oboe' => 'woodwind',
'trumpet' => 'brass',
'violin' => 'string'
}
=> 左側がキーで、右側がそれに対応する値です。ハッシュテーブルの中では、キーは一意でなければなりません(2つの "drum" アイテムが存在してはいけません)。ハッシュテーブルの中のキーと値は、どんなオブジェクトでも構いません。値が配列であるハッシュテーブルや、他のハッシュテーブルなどがあるかもしれません。
ハッシュテーブルは、配列と同じ角括弧表現でインデックスを作成します。
inst_section['oboe'] -> "woodwind"
inst_section['cello'] -> "string"
inst_section['bassoon'] -> nil
上の例で示したように、デフォルトでは、ハッシュテーブルが含んでいないキーでインデックスを作った場合、ハッシュテーブルはnilを返します。例えば、ハッシュテーブルを使って各キーの出現回数を数える場合、このデフォルト値が0であれば便利です。これは簡単で、新しい空のハッシュテーブルを作るときに、デフォルト値を指定できます。
histogram = Hash.new(0)
histogram['key1'] ->0
histogram['key1'] = histogram['key1'] + 1
histogram['key1'] ->1
関連
-
UbuntuでRuby on RailsフレームワークとRubyMine IDEを設定する
-
Ruby Hash ハッシュ型 基本操作のメソッド一覧 まとめ
-
アプレットを置き換えるHTMLスクリプトを記述するRubyの例
-
RubyおよびRuby on RailsでJSON形式のデータをパースするためのチュートリアルの例
-
Rubyのデザインパターン開発におけるobserverパターンの一例
-
Rubyにおける数値型と定数の例
-
Rubyのバージョンを管理するためのrbenvの使い方
-
Ruby WebDriverガイド
-
Rubyにおけるrequireの使用例
-
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 on rails install to remove DL is deprecated, please use Fiddle warning message method [test available].
-
Ruby on Rails:rakeとデータベースのデータ移行作業
-
RubyとRuby on Railsフレームワーク環境構築の簡潔なチュートリアル
-
Rubyのオブジェクト指向プログラミングにおけるスコープの簡単な説明
-
RubyのSimple FactoryパターンとFactory Methodパターンを利用する
-
Ruby on Railsの基礎 - 新規プロジェクト
-
Ruby on Railsのjquery_ujsコンポーネントが遅くなる問題が解決された
-
Rubyでパーセント記号とリテラル値を使用する例
-
Rubyの基本構文
-
Rubyの変数参照に関するいくつかの注意点