1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby初心者の学習過程まとめ記事#5

Posted at

#はじめに
こんにちは。
この記事はRuby初心者の私がRubyを学習した過程をまとめた記事です。
目的は学習した内容を自分の手でまとめることで知識の定着をさせることです。
また、公開する事でたくさんの人の意見を聞くことが出来れば幸いです。
恐縮ではありますが、間違っている箇所や改善点があればご教示願います。

#学習環境
環境:AWS Cloud9
バージョン:Ruby2.5.1
教材:Udemy "はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう"

#ハッシュ

ハッシュとは
キーと値の組み合わせでデータを管理するオブジェクトのこと 連想配列・ディクショナリ・マップと言う場合もある
ハッシュの作成
・{}で囲む ・キー => 値 といった形で作成 ・複数格納する場合は,で区切る

例:キーと値の組み合わせが3つのハッシュ

qiita.rb
names = {'name1' => 'Kensuke', 'name2' => 'Naoto', 'name3' => 'Takato'}

解説
nameと言う変数に、キーがname1値がKensuke、キーがname2値がNaoto、キーがname3値がTakato、のハッシュを代入

ハッシュから値を取り出す
ハッシュが入った変数[キー] で値が取り出せる

例:先程のハッシュから値Kensukeを取り出す

qiita.rb
puts names['name1']

出力結果

Kensuke

解説:ハッシュnamesからキーがname1の値Kensukeを取り出す

ハッシュにキーと値を追加する
ハッシュが入った変数[追加したいキー] = 追加したい値 でキーと値を追加出来る

例:先程のハッシュにキー'name4'値'Shunsuke'を追加する

qiita.rb
names['name4'] = 'Shunsuke'
puts names

出力結果

{"name1"=>"Kensuke", "name2"=>"Naoto", "name3"=>"Takato", "name4"=>"Shunsuke"}

解説:ハッシュnamesにキー'name4'値'Shunsuke'を追加して出力

値を変更する
ハッシュが入った変数[変更したい値のキー] = 変更後の値 で値を変更出来る

例:先程のハッシュのキー'name4'の値を'Ryotaro'に変更する

qiita.rb
names['name4'] = 'Ryotaro'
puts names

出力結果

{"name1"=>"Kensuke", "name2"=>"Naoto", "name3"=>"Takato", "name4"=>"Ryotaro"}

解説:ハッシュnamesのキー'name4'の値を'Ryotaro'に変更して出力

キーを指定して値を削除する
ハッシュが入った変数.delete(削除したい値のキー) で削除出来る

例:先程のハッシュのキー'name4'の値'Ryotaro'を削除する

qiita.rb
names.delete('name4')
puts names

出力結果

{"name1"=>"Kensuke", "name2"=>"Naoto", "name3"=>"Takato"}

解説:ハッシュnamesのキー'name4'の値'Ryotaro'を削除して出力

ハッシュがどんなキーを持っているか確認する
変数.keys で確認出来る

例:先程のハッシュがどんなキーを持っているのかを確認

qiita.rb
puts names.keys

出力結果

name1
name2
name3

解説:ハッシュnamesがどんなキーを持っているかを確認して出力。name1,name2,name3を持っている

ハッシュがどんな値を持っているか確認する
変数.values で確認出来る

例:先程のハッシュがどんな値を持っているのかを確認

qiita.rb
puts names.values

出力結果

Kensuke
Naoto
Takato

解説:ハッシュnamesがどんな値を持っているかを確認して出力。Kensuke,Naoto,Takatoを持っている

指定したキーがあるか確認する
変数.has_key?(キー) で確認出来る。キーがあればtrue、無ければfalseが返ってくる

例:先程のハッシュにキー'name1','name100'があるかを確認

qiita.rb
puts names.has_key?('name1')
puts names.has_key?('name100')

出力結果

true
false

解説:ハッシュnamesにキー'name1'と'name100'があるかを確認して出力。'name1'はあるからtrue、'name100'は無いからfalseが出力される

ハッシュのサイズ(何個キー・値があるか)を確認する
変数.size で確認出来る

例:先程のハッシュのサイズを確認

qiita.rb
puts names.size

出力結果

3

解説:ハッシュnamesに何個キー・値があるかを確認して出力。3つある為3が出力される

#シンボルを使ったハッシュ

シンボルとは
ソースコード上では文字列のように見えるが内部では整数として扱われるオブジェクト シンボルを使ったキーの方が文字列をキーに使う場合に比べてハッシュのアクセスが速い為、シンボルを使ったハッシュの方が好ましい
シンボルを使ったハッシュの定義
変数名 = {キー: 値, キー: 値} で定義できる

例:先程のハッシュをシンボルを使って定義

qiita.rb
names = {name1: 'Kensuke', name2: 'Naoto', name3: 'Takato'}
puts names

出力結果

{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato"}

解説:シンボルを使ったハッシュnamesを作成して出力。キーが文字列だが''は不要

シンボルを使った値の取り出し方
変数[:キー] で取り出せる

例:先程のハッシュから値'Kensuke'を取り出す

qiita.rb
puts names[:name1]

出力結果

Kensuke

解説:ハッシュnamesからキー:name1の値'Kensuke'を取り出して出力

シンボルを使った値の追加
変数[:追加したいキー] = 追加したい値 で値を追加出来る

例:先程のハッシュにキー:name4値'Shunsuke'を追加

qiita.rb
names[:name4] = 'Shunsuke'
puts names

出力結果

{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato", :name4=>"Shunsuke"}

解説:ハッシュnamesにキー:name4値'Shunsuke'を追加して出力

シンボルを使った値の変更
変数[:変更したい値のキー] = 変更後の値 で値を変更出来る

例:先程のハッシュの値'Shunsuke'を'Ryotaro'に変更

qiita.rb
names[:name4] = 'Ryotaro'
puts names

出力結果

{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato", :name4=>"Ryotaro"}

解説:ハッシュnamesの値'Shunsuke'を'Ryotaro'に変更して出力

シンボルを使った値の削除
変数.delete(:削除したい値のキー) で削除出来る

例:先程のハッシュの値'Ryotaro'を削除

qiita.rb
names.delete(:name4)
puts names

出力結果

{:name1=>"Kensuke", :name2=>"Naoto", :name3=>"Takato"}

解説:ハッシュnamesの値'Ryotaro'を削除して出力

#まとめ
今回はハッシュについてまとめました。次回は繰り返し処理についてまとめます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?