-1

次のコードでは、ユーザーが"pluto"または"scooby"を入力し、そのインスタンスのspeak()メソッドが呼び出されることを期待しています。

class Dog
  def speak()
    puts "Woof"
  end
end

scooby = Dog.new
pluto = Dog.new

puts "Which dog would you like to speak? [scooby/pluto]"
response = gets.chomp
response.speak()   

これを行う方法や、これを何と呼ぶか​​を教えていただければ、すばらしいことではありません。

4

2 に答える 2

0

ほとんどのRubyプログラマーは、名前でグローバル変数を検索するのではなく、名前でHashインデックス付けされた犬を保存することをお勧めします。

だからあなたは持っているべきです:

kennel = {}
kennel['scooby'] = Dog.new    
kennel['pluto'] = Dog.new

その後、あなたは言うことができます

kennel[response].speak

もちろん、response犬小屋で犬の名前にならないことの価値を警戒したいと思うでしょう。その研究はあなたに任せます。:)

于 2012-12-18T18:47:43.550 に答える
0

evalユーザーの入力により、ローカル変数の値を取得できます。

eval(response).speak()  

しかし、それは安全ではありません。

追加のチェックは次のとおりです。

eval(response).speak() if local_variables.include?(response.to_sym)

しかし、それも安全ではありません。

于 2012-12-18T18:52:21.627 に答える