使用以下代码,我希望用户输入"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()
如果您能告诉我如何做到这一点,和/或该怎么称呼它,那将是非常棒的。
答案 0 :(得分:0)
大多数Ruby程序员会建议您不要尝试按名称查找全局变量,而是将您的狗存储在按名称索引的Hash
中。
所以你应该:
kennel = {}
kennel['scooby'] = Dog.new
kennel['pluto'] = Dog.new
然后你可以说
kennel[response].speak
当然,你可能想要防止response
不是犬舍中狗的名字的价值;我会把这个研究留给你。 :)
答案 1 :(得分:0)
您可以eval
用户的输入来获取局部变量的值:
eval(response).speak()
但是,这不安全。
另外一项检查是:
eval(response).speak() if local_variables.include?(response.to_sym)
但它也不安全。