#はじめに
こんにちは。
この記事はRuby初心者の私がRubyを学習した過程をまとめた記事です。
目的は学習した内容を自分の手でまとめることで知識の定着をさせることです。
また、公開する事でたくさんの人の意見を聞くことが出来れば幸いです。
恐縮ではありますが、間違っている箇所や改善点があればご教示願います。
#学習環境
環境:AWS Cloud9
バージョン:Ruby2.5.1
教材:Udemy "はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう"
#ハッシュ
ハッシュとは
キーと値の組み合わせでデータを管理するオブジェクトのこと 連想配列・ディクショナリ・マップと言う場合もあるハッシュの作成
・{}で囲む ・キー => 値 といった形で作成 ・複数格納する場合は,で区切る例:キーと値の組み合わせが3つのハッシュ
names = {'name1' => 'Kensuke', 'name2' => 'Naoto', 'name3' => 'Takato'}
解説
nameと言う変数に、キーがname1値がKensuke、キーがname2値がNaoto、キーがname3値がTakato、のハッシュを代入
ハッシュから値を取り出す
ハッシュが入った変数[キー] で値が取り出せる例:先程のハッシュから値Kensukeを取り出す
puts names['name1']
出力結果
Kensuke
解説:ハッシュnamesからキーがname1の値Kensukeを取り出す
ハッシュにキーと値を追加する
ハッシュが入った変数[追加したいキー] = 追加したい値 でキーと値を追加出来る例:先程のハッシュにキー'name4'値'Shunsuke'を追加する
names['name4'] = 'Shunsuke'
puts names
出力結果
{"name1"=>"Kensuke", "name2"=>"Naoto", "name3"=>"Takato", "name4"=>"Shunsuke"}
解説:ハッシュnamesにキー'name4'値'Shunsuke'を追加して出力
値を変更する
ハッシュが入った変数[変更したい値のキー] = 変更後の値 で値を変更出来る例:先程のハッシュのキー'name4'の値を'Ryotaro'に変更する
names['name4'] = 'Ryotaro'
puts names
出力結果
{"name1"=>"Kensuke", "name2"=>"Naoto", "name3"=>"Takato", "name4"=>"Ryotaro"}
解説:ハッシュnamesのキー'name4'の値を'Ryotaro'に変更して出力
キーを指定して値を削除する
ハッシュが入った変数.delete(削除したい値のキー) で削除出来る例:先程のハッシュのキー'name4'の値'Ryotaro'を削除する
names.delete('name4')
puts names
出力結果
{"name1"=>"Kensuke", "name2"=>"Naoto", "name3"=>"Takato"}
解説:ハッシュnamesのキー'name4'の値'Ryotaro'を削除して出力
ハッシュがどんなキーを持っているか確認する
変数.keys で確認出来る例:先程のハッシュがどんなキーを持っているのかを確認
puts names.keys
出力結果
name1
name2
name3
解説:ハッシュnamesがどんなキーを持っているかを確認して出力。name1,name2,name3を持っている
ハッシュがどんな値を持っているか確認する
変数.values で確認出来る例:先程のハッシュがどんな値を持っているのかを確認
puts names.values
出力結果
Kensuke
Naoto
Takato
解説:ハッシュnamesがどんな値を持っているかを確認して出力。Kensuke,Naoto,Takatoを持っている
指定したキーがあるか確認する
変数.has_key?(キー) で確認出来る。キーがあればtrue、無ければfalseが返ってくる例:先程のハッシュにキー'name1','name100'があるかを確認
puts names.has_key?('name1')
puts names.has_key?('name100')
出力結果
true
false
解説:ハッシュnamesにキー'name1'と'name100'があるかを確認して出力。'name1'はあるからtrue、'name100'は無いからfalseが出力される
ハッシュのサイズ(何個キー・値があるか)を確認する
変数.size で確認出来る例:先程のハッシュのサイズを確認
puts names.size
出力結果
3
解説:ハッシュnamesに何個キー・値があるかを確認して出力。3つある為3が出力される
#シンボルを使ったハッシュ
シンボルとは
ソースコード上では文字列のように見えるが内部では整数として扱われるオブジェクト シンボルを使ったキーの方が文字列をキーに使う場合に比べてハッシュのアクセスが速い為、シンボルを使ったハッシュの方が好ましいシンボルを使ったハッシュの定義
変数名 = {キー: 値, キー: 値} で定義できる例:先程のハッシュをシンボルを使って定義
names = {name1: 'Kensuke', name2: 'Naoto', name3: 'Takato'}
puts names
出力結果
{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato"}
解説:シンボルを使ったハッシュnamesを作成して出力。キーが文字列だが''は不要
シンボルを使った値の取り出し方
変数[:キー] で取り出せる例:先程のハッシュから値'Kensuke'を取り出す
puts names[:name1]
出力結果
Kensuke
解説:ハッシュnamesからキー:name1の値'Kensuke'を取り出して出力
シンボルを使った値の追加
変数[:追加したいキー] = 追加したい値 で値を追加出来る例:先程のハッシュにキー:name4値'Shunsuke'を追加
names[:name4] = 'Shunsuke'
puts names
出力結果
{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato", :name4=>"Shunsuke"}
解説:ハッシュnamesにキー:name4値'Shunsuke'を追加して出力
シンボルを使った値の変更
変数[:変更したい値のキー] = 変更後の値 で値を変更出来る例:先程のハッシュの値'Shunsuke'を'Ryotaro'に変更
names[:name4] = 'Ryotaro'
puts names
出力結果
{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato", :name4=>"Ryotaro"}
解説:ハッシュnamesの値'Shunsuke'を'Ryotaro'に変更して出力
シンボルを使った値の削除
変数.delete(:削除したい値のキー) で削除出来る例:先程のハッシュの値'Ryotaro'を削除
names.delete(:name4)
puts names
出力結果
{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato"}
解説:ハッシュnamesの値'Ryotaro'を削除して出力
#まとめ
今回はハッシュについてまとめました。次回は繰り返し処理についてまとめます。