2009-07-18 26 views
1

ハッシュテーブルに関数を格納したいと考えています。私のようなマップを作成することができます。Booでディスパッチテーブルを作成するにはどうしたらいいですか?

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

しかし、私はそれを呼び出すことができませんよ。

func = hash["one"] 
func() 

これは、次のエラーメッセージ生成:種類に表現を起動することはできません」をオブジェクト 'InvokeまたはCallのいずれも機能しません。

どうすればいいですか?私が推測していることから、ストアド関数は何かにキャストする必要があります。

答えて

2

あなたはCallable typeにキャストする必要があります。

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

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

感謝を!それはうまくいった。 – Geo

3

あなたはまた、呼び出し可能にキャストする必要性を防ぐために、一般的な辞書を使用することができます。

import System.Collections.Generic 

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

fn = hash["one"] 
fn() 
関連する問題