class Fruits
def initialize(name, color, variety) #仮引数(第一引数, 第二引数, 第三引数) #initializeメソッドは新たな呼び出しは不要です。
@name = name #インスタンス変数を定義
@color = color
@variety = variety
end
def name #ゲッター(ゲッターメソッド名は、クラス外で出力する際に用いますので、重要です。)
@name #インスタンスの値を取得している
end
def color #同じくゲッター
@color
end
def variety
@variety
end
end
class InfoFruits #呼び出しが必要です。
def initialize(fruits) #インスタンス変数の定義
@fruits = fruits
end
def fruits #ゲッター
@fruits #インスタンス変数の値の取得 #実引数三つ分の配列です。
end
def info_fruits
self.fruits.each do |fruit| #eachメソッドは配列の要素の数だけ、繰り返し処理を行います。
#self.fruitsはインスタンスの値、実引数三つ分の配列です。
puts "#{fruit.name}は#{fruit.color}です。品種は#{fruit.variety}です。" #ゲッターで取得しました値の出力の際は**インスタンス名.ゲッターメソッド名**と記述致します。
end
end
end
array = [{info:{info_fruit_name: "りんご", info_fruit_color: "赤色"}}, #配列の中に二重ハッシュが含まれています。
{info:{info_fruit_name: "バナナ", info_fruit_color: "黄色"}},
{info:{info_fruit_name: "ぶどう", info_fruit_color: "紫色"}}]
fruits = []
array.each do |double_hash| #eachメソッドは配列の要素の数だけ処理を繰り返し行います。
fruit_name = double_hash[:info][:info_fruit_name] #二重ハッシュの場合、keyを二つ選択することにより、目的のvalueの取得に成功いたします。
fruit_color = double_hash[:info][:info_fruit_color]
puts "#{fruit_name}の品種はどちらになりますか?"
double_hash[:info][:info_fruit_variety] = gets.chomp #ハッシュに新たなkeyを指定してあげることで、新たなvalueの追加が可能となります。
fruit_variety = double_hash[:info][:info_fruit_variety]
if fruit_variety == "シャインマスカット" #条件分岐
fruit_color = "緑色"
end
fruits << Fruits.new(fruit_name, fruit_color, fruit_variety) #実引数をFruitsクラスに渡し、インスタンスを生成すると同時に、initializeメソッドが処理を行いインスタンス変数を定義し、その値をゲッターにより取得します。
#仮引数と実引数の数は合わせます。#値を取得することにより、クラスのスコープ外で出力が可能となります。出力の際は**インスタンス名.ゲッターメソッド名**と記述致します。
end
info_fruit = InfoFruits.new(fruits) #三つ分の実引数を持った、配列fruitsをInfoFruitsクラスに渡し、インスタンスを生成し、initializeメソッドが処理を行い、インスタンス変数を定義、ゲッターにより、その値を取得します。
info_fruit.info_fruits #info_fruitsインスタンスメソッドの呼び出しです。
#出力結果
りんごの品種はどちらになりますか?
ふじ
バナナの品種はどちらになりますか?
ジャイアント・キャベンディッシュ
ぶどうの品種はどちらになりますか?
巨峰
りんごは赤色です。品種はふじです。
バナナは黄色です。品種はジャイアント・キャベンディッシュです。
ぶどうは紫色です。品種は巨峰です。
#出力結果
りんごの品種はどちらになりますか?
ふじ
バナナの品種はどちらになりますか?
ジャイアント・キャベンディッシュ
ぶどうの品種はどちらになりますか?
シャインマスカット
りんごは赤色です。品種はふじです。
バナナは黄色です。品種はジャイアント・キャベンディッシュです。
ぶどうは緑色です。品種はシャインマスカットです。
誤っている箇所、認識が不足している部分について、ご指摘頂ければ幸いに存じます。