学校の課題で、クラスとインスタンスを使って現在のコードを書き換えたいのですが、途中まで考えてわからなかったので教えてほしいです。
ruby
1 2def post_review(a_posts) 3 4 post = {} 5 puts "ジャンルを入力してください" 6 post[:genre] = gets.chomp 7 puts "タイトルを入力してください" 8 post[:title] = gets.chomp 9 puts "感想を入力してください" 10 post[:review] = gets.chomp 11 line = "-------------------------------" 12 13 puts "ジャンル : #{post[:genre]}\n#{line}" 14 puts "タイトル : #{post[:title]}\n#{line}" 15 puts "感想 : \n#{post[:review]}\n#{line}" 16 17 18 a_posts << post 19 20 return a_posts 21 end 22 23def read_reviews(a_posts) 24 25 number = 0 26 a_posts.each do |post| 27 puts "[#{number}] : #{post[:title]}のレビュー" 28 number += 1 29 end 30 31 puts "\nみたいレビューの番号を入力してください :" 32 input = gets.to_i 33 34 35 post = a_posts[input] 36 37 38 line = "-------------------------------" 39 puts "ジャンル : #{post[:genre]}\n#{line}" 40 puts "タイトル : #{post[:title]}\n#{line}" 41 puts "感想 : \n #{post[:review]}\n#{line}" 42end 43 44def end_program 45 exit 46end 47 48def exception 49 puts "入力された値は無効な値です" 50end 51 52posts = [] 53 54while true do 55 56 puts "レビュー数 : #{posts.length}" 57 puts "[0]レビューを書く" 58 puts "[1]レビューを読む" 59 puts "[2]アプリを終了する" 60 input = gets.to_i 61 62 if input == 0 63 posts = post_review(posts) 64 elsif input == 1 65 read_reviews(posts) 66 elsif input == 2 67 end_program 68 else 69 exception 70 end 71end
途中まで考えたコードはこちらです。
ruby
1class Review 2 attr_accessor :genre, :title, :voice 3 @@post = [] 4 5 def self.input 6 puts "ジャンルを入力してください" 7 genre = gets.chomp 8 puts "タイトルを入力してください" 9 title = gets.chomp 10 puts "感想を入力してください" 11 voice = gets.chomp 12 line = "-------------------------------" 13 14 review = Review.new(genre, title, voice) 15 @@post << review 16 end 17 18 def initialize(genre, title, voice) 19 @genre = genre 20 @title = title 21 @voice = voice 22 end 23end 24 25Review.input 26
Rubyについてあまり理解できていないため、正解のコードを知って逆から理解していきたいとおもっています。
よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/30 13:24
2016/12/30 15:39
退会済みユーザー
2016/12/30 23:59