Rubyのシンタックスを息を吸うように書くために、少しでも理解が怪しいシンタックスを繰り返したくために書きます。
前提知識
- ハッシュは、
key
とvalue
の組み合わせからなるオブジェクト - JavaScriptでいう連想配列のようなもの
- Rubyでいうハッシュのクラスは
Hash
val = {}
p val.class
=> Hash
- 特徴:
key
とvalue
が大量に格納されている場合でも指定した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
ハッシュの上書き
上で定義した変数 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
ハッシュを使った繰り返し処理
ハッシュにeach
メソッドを使うと以下のような特徴がある
- 引数を2つ用意すれば
key
とvalue
を取り出せる -
key
とvalue
のセットは格納した順番に取り出せる
ハッシュを使った繰り返し処理 / 第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
ハッシュの同値比較
ハッシュを同値比較させてtrue
出力させてください
正解
languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
programming_languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages == programming_languages
=> true
ハッシュの要素数の取得
ハッシュの要素数の取得するようなプログラムを書いてください。
正解
languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages.size
p languages.length
=> 3
=> 3
ハッシュの要素の削除
ハッシュの要素の削除 / 問題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
を削除したハッシュをブロックに渡した戻り値は、削除したkey
のvalue
であることを証明するプログラムを書いてね。
正解
languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages.delete('ruby') { |v| "#{v}" }
=> "rails"