将一个proc存储在一个哈希中的数组中

时间:2013-11-18 16:46:33

标签: ruby arrays hash proc

我还在处理文字冒险。我在使用/ with功能时遇到问题。它用于调用Hash,其中键是使用的对象,内容包括数组;数组中的第一个元素是目标对象,第二个元素是当该关系变为匹配use / with函数的参数时将执行的。

请你澄清我如何将代码块存储在散列内的数组中,以便我可以在以后根据正在合并的对象进行调用?

这是我的使用功能,使用对象“:

    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

它只返回一个新的提示行。

1 个答案:

答案 0 :(得分:1)

你忘记了.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!