「Rubyがミニツク」の演習問題を解く vol3
基礎知識レッスンの演習
問題
以下のプロフィールのデータを入れたデータ構造を作成してください。 そして、そのデータ構造から特定のデータを検索して返すsearchメソッドを定義してください。
名前 | 年齢 | 住所 |
---|---|---|
静岡 太郎 | 34歳 | 静岡県 |
名古屋 次郎 | 25歳 | 愛知県 |
大津 三郎 | 19歳 | 滋賀県 |
という問題
私の回答・解説
こんな感じだろうか。
ハッシュ使ったり、メソッド作ったり、ループさせたりと
色々使いました。(書き方分からなくて調べながら作りました。)
結構時間がかかってしまった。
模範回答を見てみよう
1. profiles = [ 2. {:name => "静岡 太郎", :age => 34, :address => "静岡県"}, 4. {:name => "名古屋 次郎", :age => 25, :address => "愛知県"}, 5. {:name => "大津 三郎", :age => 19, :address => "滋賀県"}, 6. ] 7. 8. def search(profiles, key, query) 9. profiles.each do |profile| 10. if query =~ profile[key] 11. return profile 12. end 13. end 14. end search(profiles, :name, /静岡 太郎/)
ほぼ同じですが、模範回答は正規表現を使ってるのがポイントですね。
そこまで頭が回らなかったです。
ただ、この模範回答はちょっとよくない部分がありました。
ageで検索しようとするとエラーになります。
正規表現は文字列の検索しかできないので数値では駄目みたいです。
やるとすると、
ageの値を初めから文字列で持っておくか
正規表現で比較する前に文字列にしておくか
でしょうか。
次回は「Stringクラスレッスンの演習」やります。