Le stockage d'un proc à l'intérieur d'un tableau à l'intérieur d'une table de hachage

StackOverflow https://stackoverflow.com//questions/20053112

  •  27-12-2019
  •  | 
  •  

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.

Était-ce utile?

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!
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top