Frage

Ich möchte in der Lage sein, eine Funktion in einem Hashtable zu speichern. Ich kann eine Karte erstellen wie:

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

Aber ich kann es nicht nennen:

func = hash["one"]
func()

Dies erzeugt die folgende Fehlermeldung: Es ist nicht möglich, einen Ausdruck auf Typ 'Objekt' aufzurufen. Weder Invoke oder Call Arbeiten.

Wie kann ich es tun ? Nach dem, was ich vermute, sollte die gespeicherte Funktion auf etwas gegossen werden.

War es hilfreich?

Lösung

Sie müssen zu einem werfen Callable -Typ:

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

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

Andere Tipps

Sie können auch ein generisches Wörterbuch verwenden, um zu verhindern, dass sie auf ein Callable gegossen werden müssen:

import System.Collections.Generic

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

fn = hash["one"]
fn()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top