Comment puis-je créer une table d'expédition à Boo?
-
18-09-2019 - |
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.
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