Wie kann ich eine Versandtabelle in Boo erstellen?
-
18-09-2019 - |
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.
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