Question

Je voudrais être en mesure de stocker une fonction dans une table de hachage. Je peux créer une carte comme:

hash = {}
hash["one"] = def():
   print "one got called"

Mais je ne peux pas l'appeler:

func = hash["one"]
func()

Ce produit le message d'erreur suivant: Il est impossible d'invoquer une expression du type 'objet' . Ni les œuvres de Invoke ou Call.

Comment puis-je faire? D'après ce que je devine, la fonction stockée doit être jeté à quelque chose.

Était-ce utile?

La solution

Vous devez jeter un Type appelable :

hash = {}
hash["one"] = def ():
   print "one got called"

func = hash["one"] as callable
func()

Autres conseils

Vous pouvez également utiliser un dictionnaire générique pour éviter la nécessité de jeter un appelable:

import System.Collections.Generic

hash = Dictionary[of string, callable]()
hash["one"] = def():
    print "got one"

fn = hash["one"]
fn()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top