2009-07-18 4 views
1

Ich möchte in der Lage sein, eine Funktion in einer Hashtabelle zu speichern. Ich kann eine Karte wie erstellen:Wie kann ich eine Versandtabelle in Boo erstellen?

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

Aber ich bin nicht in der Lage, es zu nennen:

func = hash["one"] 
func() 

Dies erzeugt die folgende Fehlermeldung: Es ist nicht möglich, einen Ausdruck vom Typ 'aufzurufen Objekt '. Weder Invoke noch Call funktioniert.

Wie kann ich es tun? Von dem, was ich vermute, sollte die gespeicherte Funktion in etwas umgewandelt werden.

Antwort

2

Sie müssen einen Callable type würfen

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

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

Dank! Das hat funktioniert. – Geo

3

Sie könnten auch ein generisches Wörterbuch verwenden, um die Notwendigkeit zu verhindern, zu einem abrufbaren würfen

import System.Collections.Generic 

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

fn = hash["one"] 
fn() 
Verwandte Themen