LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-23

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

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メソッドを使えば配列オブジェクトのデータ数を取得できる。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0