2

、、、、、などの属性を含むという名前のクラスがありFamily Membersます (ファイル内) 。family_members.rbnamesextyperoleage

とというインスタンスを作成fm1しました。fm2 fm3 fm4fm5

#family_members.rb

require_relative 'family'
require_relative 'checkdetails'

class FamilyMembers < Family

  attr_accessor :name, :sex, :status, :age
  def initialize (name, sex, type, role, age)
    @name = name
    @sex = sex
    @type = type
    @role = role
    @age = age
  end

end

fm1 = FamilyMembers.new('Andrew','Male', 'Child', "Son" , "27" )
fm2 = FamilyMembers.new("Bill","Male", "Parent", "Father" , "63" )
fm3 = FamilyMembers.new("Samantha","Female", "Parent", "Mother" , "62" )
fm4 = FamilyMembers.new("Thomas","Male", "Child", "Dog" , "10" )
fm5 = FamilyMembers.new("Samantha", 'Female', "Child", "Dog" , "4" )

Parent?クラスのインスタンスが aParentまたは aであるかどうかをチェックするメソッドChildが呼び出され、以下に示すように呼び出されます。

#check_details   //would like to use this method

fm4.parent?

ユーザーがチェックするクラスのインスタンスを動的に選択することは可能でしょうか?

ファイルで呼び出さcheck_detailsれるメソッドを作成しました。checkdetails.rb

#checkdetails.rb

def check_details
  puts "What family to you want to check? choose 1 to 5"
  $family = 'fm' + gets.chomp
end

ただし、次のようにメソッドを呼び出そうとするとparent:

check_details

$family.parent?

次のエラーが表示されます。

`<top (required)>': undefined method `parent?' for "fm1":String (NoMethodError)
    from -e:1:in `load'
    from -e:1:in `<main>'

これを動的に行う方法はありますか?おそらくグローバル変数なし-これは悪い習慣と見なされているのでしょうか?

助けてくれてありがとう。

4

1 に答える 1