class Person
def sampleMethod
end
end
jack = Person.new
input = gets.chomp
如何通过用户输入调用jack对象?我试过这个:
input = gets.downcase.chomp.to_sym
它调用方法而不是对象。
我也试过这个:
eval input + '.sampleMethod'
和此:
Kernel.const_get(input).sampleMethod
请帮忙。
答案 0 :(得分:1)
我会将每个人存储在哈希中,哈希的键是该人可以被引用的名称。
class Person
Registry = {}
def sample_method
puts 'hello, world'
end
end
Person::Registry['jack'] = Person.new
name = 'jack' # or you can use: name = gets.chomp
person = Person::Registry.fetch(name)
person.sample_method
将eval
与用户输入一起使用是危险的,因为它会为用户提供各种方式,可能会意外或恶意地搞乱您的程序。我不会将eval
作为解决这个相对简单问题的第一个工具。
答案 1 :(得分:0)
goto
您可以使用myloopTag:
for (...; ...; ...) {
// and you can break current loop by:
break;
// or specific (outer) loop by
break myloopTag;
// you can also use 'continue' to go to the start of the loop and increment again
continue;
// or to 'continue' at a label:
continue myloopTag;
}
来调用该对象。
class Person
def sampleMethod
puts "hello, world"
end
end
jack = Person.new
input = "jack"
它们具有相同的对象ID,因此它们调用相同的对象。