Techioz Blog

このサンプル Ruby コードでは結果が出力されないのはなぜですか?

概要

なぜ以下のコードでは星が 3 つ以上の映画が出力されないのか疑問に思っています。

movie_ratings = {
  memento: 3,
  primer: 3.5,
  the_matrix: 5,
  truman_show: 4,
  red_dawn: 1.5,
  skyfall: 4,
  alex_cross: 2,
  uhf: 1,
  lion_king: 3.5
}

def good_movies
  puts movie_ratings.select {|movies, ratings| ratings > 3}
end
good_movies

解決策

メソッド good_movies では、ローカル変数 movie_rateds にアクセスできません。ここではいくつかのアプローチが利用できます。