我仍在进行文本冒险。我的使用/功能有问题。它是指调用一个Hash,其中密钥是所使用的对象,内容包括一个数组;数组中的第一个元素是目标对象,第二个元素是Proc,如果该关系与use/wwith函数的参数匹配,则将执行该Proc。
请澄清一下如何将代码块存储在哈希中的数组中,以便稍后根据组合的对象调用它?
这是我的使用函数,它接受"将对象与一起使用":
def use(object, with)
if INTERACTIONS[object][0] == with
INTERACTIONS[object][1]
end
end
这就是我定义关系的方式(到目前为止只有一种):
INTERACTIONS = {"key" => ["clock", p = Proc.new{puts "You open the clock!"}]}
每当我键入时
use key with clock
它只返回一个新的提示行。
您忘记.call
进程:
INTERACTIONS = {"key" => ["clock", Proc.new {puts "You open the clock!"}]}
def use(object, with)
if INTERACTIONS[object][0] == with
INTERACTIONS[object][1].call # procs need to be `call`ed :)
end
end
use("key", "clock") # => You open the clock!