Come posso creare una tabella di invio a Boo?
-
18-09-2019 - |
Domanda
Mi piacerebbe essere in grado di memorizzare una funzione in una tabella hash. Posso creare una mappa del tipo:
hash = {}
hash["one"] = def():
print "one got called"
Ma io non sono in grado di chiamarlo:
func = hash["one"]
func()
Questo produce il seguente messaggio di errore: Non è possibile invocare un'espressione del tipo di 'oggetto' . Né Invoke
o Call
lavori.
Come posso fare? Da quello che sto cercando di indovinare, la funzione memorizzata dovrebbe essere gettato a qualcosa.
Soluzione
È necessario lanciare ad un Tipo Callable :
hash = {}
hash["one"] = def ():
print "one got called"
func = hash["one"] as callable
func()
Altri suggerimenti
Si potrebbe anche usare un dizionario generico per prevenire la necessità di lanciare un callable:
import System.Collections.Generic
hash = Dictionary[of string, callable]()
hash["one"] = def():
print "got one"
fn = hash["one"]
fn()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow