Le stockage d'un proc à l'intérieur d'un tableau à l'intérieur d'une table de hachage
Question
Je travaille toujours sur mes aventures en mode texte.J'ai de la difficulté avec l'utilisation/avec la fonction.Elle est destinée à appeler l'un de Hachage dont les clés sont les objets utilisés et le contenu comprend un tableau;le premier élément du tableau est l'objet cible, et la seconde est une Proc qui sera exécuté si cette relation se tourne vers match les arguments en faveur de l'utilisation/avec la fonction.
S'il vous plaît, pouvez-vous me préciser comment je peux stocker un bloc de code à l'intérieur d'un tableau à l'intérieur d'une table de hachage donc, je peux rappeler plus tard, selon les objets qui sont combinés?
Voici mon utilisation de la fonction que prend "l'utilisation objet avec avec":
def use(object, with)
if INTERACTIONS[object][0] == with
INTERACTIONS[object][1]
end
end
Et c'est ainsi que je définis par les relations (pour l'instant il y a juste un):
INTERACTIONS = {"key" => ["clock", p = Proc.new{puts "You open the clock!"}]}
Chaque fois que je tape
use key with clock
il ne retourne rien mais une nouvelle invite de ligne.
La solution
Vous avez oublié de .call
le proc:
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!