LoginSignup
0
1

More than 3 years have passed since last update.

Rubyのシンタックス勉強用(ハッシュ 編)

Posted at

Rubyのシンタックスを息を吸うように書くために、少しでも理解が怪しいシンタックスを繰り返したくために書きます。

前提知識

  • ハッシュは、keyvalueの組み合わせからなるオブジェクト
  • JavaScriptでいう連想配列のようなもの
  • RubyでいうハッシュのクラスはHash
val = {}
p val.class

=> Hash
  • 特徴: keyvalueが大量に格納されている場合でも指定したkeyに対するvalueを高速で取得できます
  • 存在しないkeyを指定するとnilがかえってきます
languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages['java']

=> nil

前提知識 / ハッシュのリテラル

書き方は以下のような感じ、最後にカンマがついてもエラーにはならない
同じキーが複数回使われた場合は最後のキーが優先されます(CSSみたいですね)
ですが、そんな書き方は現場ではしないほうがいいと思います

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django' }
p languages

=> {"ruby"=>"rails", "php"=>"laravel", "python"=>"django"}

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages

=> {"ruby"=>"rails", "php"=>"laravel", "python"=>"django"}

ハッシュの追加

上で定義した変数 languages に新たなkey & valueペアをハッシュに追加してください。

return 例

{"ruby"=>"rails", "php"=>"laravel", "python"=>"django", "javascript"=>"react"}

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages['javascript'] = 'react'
p languages

参考: プロを目指す人のためのRuby入門_148p

ハッシュの上書き

上で定義した変数 language に新たなkey & valueペアをハッシュに追加して
さらに、既存のkeyに対して、新たにvalueを上書きする処理を書いてください。

return 例

{"ruby"=>"rails", "php"=>"laravel", "python"=>"django", "javascript"=>"vue.js"}

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages['javascript'] = 'react'
p languages
languages['javascript'] = 'vue.js'
p languages

参考: プロを目指す人のためのRuby入門_148p

ハッシュを使った繰り返し処理

ハッシュにeachメソッドを使うと以下のような特徴がある

  • 引数を2つ用意すればkeyvalueを取り出せる
  • keyvalueのセットは格納した順番に取り出せる

ハッシュを使った繰り返し処理 / 第1問

以下のような return 例を実現するプログラムを書いてね

"ruby => rails"
"php => laravel"
"python => django"

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }

languages.each do |k,v|
  p "#{k} => #{v}"
end

ハッシュを使った繰り返し処理 / 第2問

以下のような return 例を実現するプログラムを書いてね

"[\"ruby\", \"rails\"]"
"ruby"
"rails"
"[\"php\", \"laravel\"]"
"php"
"laravel"
"[\"python\", \"django\"]"
"python"
"django"

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }

languages.each do |kv|
  p "#{kv}"
  p kv[0]
  p kv[1]
end

参考: プロを目指す人のためのRuby入門_149p

ハッシュの同値比較

ハッシュを同値比較させてtrue出力させてください

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
programming_languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages == programming_languages

=> true

参考: プロを目指す人のためのRuby入門_150p

ハッシュの要素数の取得

ハッシュの要素数の取得するようなプログラムを書いてください。

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages.size
p languages.length

=> 3
=> 3

参考: プロを目指す人のためのRuby入門_150p

ハッシュの要素の削除

ハッシュの要素の削除 / 問題1

特定のkeyを削除するようなメソッドを利用して
以下のような return 例を実現するプログラムを書いてね

{"php"=>"laravel", "python"=>"django"}

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages.delete('ruby')
p languages

ハッシュの要素の削除 / 問題2

特定のkeyした後に、削除した要素を取得しようして、nilを出力させてください。

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages.delete('ruby')
p languages['ruby']

=> nil

ハッシュの要素の削除 / 問題3

特定のkeyを削除したハッシュをブロックに渡した戻り値は、削除したkeyvalueであることを証明するプログラムを書いてね。

正解

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages.delete('ruby') { |v| "#{v}" }

=> "rails"

参考: プロを目指す人のためのRuby入門_150p

0
1
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
0
1