给定一个类实例和一个字符串,我该如何将该字符串转换为引用该实例?
class Room
def enter
puts "Welcome!"
end
end
# Rooms are predefined
lounge = Room.new
kitchen = Room.new
study = Room.new
puts "Which room would you like to go to?"
print "> "
room = gets.strip
# User types "lounge"
room.enter # => undefined method `enter' for "lounge":String (NoMethodError)
我理解为什么会出现NoMethodError,但是我还没想出如何将room
字符串转换为指向已存在的名为lounge
的Room实例。
Object.const_get("Room").new.enter
,但是在引用现有实例时却不行:Object.const_get("lounge").enter # => wrong constant name lounge (NameError)
。我认为这是因为Room
类是一个常量,而lounge
不是。 - Nickrequire 'active_support/core_ext/string/inflections'
才是。 - the Tin Man