BETA

Ruby ターミナル内アプリの作り方② (メソッド・引数の使い方)

投稿日:2020-09-01
最終更新:2020-09-04

今回はTwitterで知り合ったあっこさんに教えて頂いた、
八百屋さんアプリの作り方をまとめていきます。

八百屋さんアプリの完成形(メソッド使用バージョン)

まずは①で作成した完成形のコードから。。

menus = [  
  {name: "とまと", price: 100},  
  {name:"にんじん", price: 200},  
  {name:"かぼちゃ", price: 300},  
  {name:"スイカ", price: 1000}  
]  

menus.each.with_index(1) do |menu,i|  
  puts "#{i}.#{menu[:name]}(¥#{menu[:price]})"  
end  

print "商品を選択 > "    
order = gets.chomp.to_i    
select_menu = menus[order - 1]   

print "#{select_menu[:name]}ですね。何個買いますか。>"    
count = gets.chomp.to_i     

total_price = select_menu[:price] * count    
if count >= 5    
  puts "5個以上なので20%割引となります"    
  total_price *= 0.8    
end    
puts "合計金額:¥#{total_price.floor}"   

これを4つのメソッドに分ける。。
今回はメソッドと引数について。。

①メニュー表示メソッド 

menus の配列はあるとする。。

def disp(menus)  
  menus.each.with_index(1) do |menu,i|  
    puts "#{i}.#{menu[:name]}(¥#{menu[:price]})"  
  end  
end  

disp(menus)  

(menus)を引数といいます。
メソッドより外にmenusが定義されている場合は、引数を使いメソッド内でも
使用できるようにします。
これがないとエラーとなります。。

②商品番号を選択メソッド 

def select_menu(menus)  
    print "商品を選択 > "  
    order = gets.chomp.to_i  
    select_menu = menus[order - 1]  
end  

disp(menus)  
select_menu = select_menu(menus)  

選んだ商品の情報はこの後ほかのメソッドで使うのでselect_menuに代入する。

③個数を選択メソッド 

def count_num(select_menu)  
    print "#{select_menu[:name]}ですね。何個買いますか。>"  
    count_num = gets.chomp.to_i  
end  

disp(menus)  
select_menu = select_menu(menus)  
count_num = count_num(select_menu)  

count_numの引数は、商品名を使うので(select_menu)となる。
使うときは"#{select_menu[:name]}引数名[:キー]となります。
これをほかのメソッドで使うのでcount_numに代入する。

④合計金額メソッド 

def total_price(select_menu, count_num)  
  total_price = select_menu[:price] * count_num  
  if count_num >= 5  
    puts "5個以上なので20%割引となります"  
    total_price *= 0.8  
  end  
    puts "合計金額:¥#{total_price.floor}"  
end  

disp(menus)  
select_menu = select_menu(menus)  
count_num = count_num(select_menu)  
total_price(select_menu, count_num)  

total_praiceの引数は商品名と個数を使うため、引数は(select_menu, count_num)となる。

八百屋アプリ(メソッドバージョン)完成!!!

メソッド・引数が全く分からない状態からのスタート。。
調べるよりも作ったほうが分かることもあるかもしれない。。
少なくとも私は理解が深まった。
理解できると楽しくてたまらない。。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

アラフォーから始めるプログラミング!!!目指せエンジニア☆☆

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう