Just do IT

思うは招く

Ruby基礎問題100本ノック#17 ハッシュの定義、eachメソッドを使う

お題

  • (1)曜日を表す英語と、日本語との対応を表すハッシュwdayを定義せよ
  • (2)ハッシュのメソッドを使い、ハッシュwdayのペアの数を数えよ
  • (3)eachメソッドと(1)のハッシュwdayを使って、以下のような文字列を出力せよ
「sunday」は日曜日のことです。
「monday」は月曜日のことです。

回答

(1)

wday = {
  sunday: '日曜日',
  monday: '月曜日',
  tuesday: '火曜日',
  wednesday: '水曜日',
  thursday: '木曜日',
  friday: '金曜日',
  saturday: '土曜日'
}

(2)

p wday.keys.size
=> 7

(3)

wday.each do |key, val|
  puts "#{key}」は#{val}のことです。"
end
=>
「sunday」は日曜日のことです。
「monday」は月曜日のことです。
「tuesday」は火曜日のことです。
「wednesday」は水曜日のことです。
「thursday」は木曜日のことです。
「friday」は金曜日のことです。
「saturday」は土曜日のことです。

説明

今回はキーをシンボルで定義してみた。 sunday: '日曜日'といったように、:を使うとシンボルでキーを登録できる。

ペア数を数えるということは、キーの値を数えればいいということなので、keysメソッドでキーだけを取り出し、sizeメソッドで要素数を取り出した。

また、ary#each do |キー、値|でキーと値をそれぞれ取り出せる。

学び

普通にHash#sizeだけでよかった。

p wday.keys.size
→ p wday.size
=> 7