Help us understand the problem. What is going on with this article?

基礎カリキュラムで学習したRuby言語で作るアプリケーション(アルゴリズム)のまとめ

配列オブジェクトの生成、 空のハッシュの生成、 <<メソッド

reviewApp.rb
def post_review(a_posts)
  # 変数の定義
  post = {}  # ハッシュの生成(空)
  puts "ジャンルを入力してください:"
  post[:genre] = gets.chomp
  puts "タイトルを入力してください:"
  post[:title] = gets.chomp
  puts "感想を入力してください:"
  post[:review] = gets.chomp
  line = "------------------------"
  # レビューの描画
  puts "ジャンル : #{post[:genre]}\n#{line}"
  puts "タイトル : #{post[:title]}\n#{line}"
  puts "感想 :\n#{post[:review]}\n#{line}"

  a_posts << post  # 配列オブジェクトに追加する

  return a_posts   # a_postsをメソッドの呼び出し元に返す(配列オブジェクトに追加されたデータを返すことになる)
end

def read_reviews(a_posts)
  # リストの表示
  number = 0
  a_posts.each do |post|
    puts "[#{number}]:#{posts[:title]}のレビュー"
    number += 1
  end

  puts "\n見たいレビューの番号を入力してください:"
  input = gets.to_i

  # レビューの取得
  post = a_posts[input]

  # レビューの描画
  line = "------------------------"
  puts = "ジャンル : #{post[:genre]}\n#{line}"
  puts = "タイトル : #{post[:title]}\n#{line}"
  puts "感想 :\n#{post[:review]}\n#{line}"
end

def end_program
  exit    # プログラムを終了する
end

def exception
  puts "入力された値は無効な値です"
end

  posts = []    # 配列オブジェクトの生成

while true do  # ループ処理
  # メニューの表示
  puts "レビュー数:#{posts.length}"
  puts "[0]レビューを書く"
  puts "[1]レビューを読む"
  puts "[2]アプリを終了する"
  input = gets.to_i

  if input == 0 then
    posts = post_review(posts)  # post_reviewメソッドの呼び出し
  elsif input == 1 then
    read_reviews(posts)    # post_reviewsメソッドの呼び出し
  elsif input == 2 then  # プログラムを終了する(ループの解除)
    end_program     # end_programメソッドの呼び出し
  else
    exception       # exceptionメソッドの呼び出し
  end
end

まとめ

  1. メソッド呼び出し元の引数の名前と実行されるメソッドの方の引数の名前は同じにしなくても問題なし。
  2. 配列オブジェクトの生成は posts = []とする。
  3. 配列オブジェクトに要素を追加するために <<メソッドを使う。 a_posts << posta_postsの中に配列の要素が追加され、それを呼び出し元に返す目的で上記コードの場合は成り立つ。(posts = a_postsになっているため)
  4. 空のハッシュの生成をしておくには post = {}と書く。
  5. posts.lengthのようにlengthメソッドを使えば配列オブジェクトのデータ数を取得できる。
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away