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.

È stato utile?

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
scroll top