-1

使用以下代码,我希望用户输入"pluto"or "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 回答