どのように私はブーにディスパッチテーブルを作成することができますか?
-
18-09-2019 - |
質問
私は、ハッシュテーブル内の関数を保存できるようにしたいと思います。私のようなマップを作成することができます:
hash = {}
hash["one"] = def():
print "one got called"
しかし、私はそれを呼び出すことができませんよ。
func = hash["one"]
func()
のそれはタイプの式を起動することはできません「オブジェクト」のこれは、次のエラーメッセージを生成します。どちらInvoke
またはCall
作品ます。
どのように私はそれを行うことができますか?私は推測しているところでは、保存された機能は、何かにキャストする必要があります。
解決
あなたは呼び出し可能型のにキャストする必要があります:
hash = {}
hash["one"] = def ():
print "one got called"
func = hash["one"] as callable
func()
他のヒント
また、呼び出し可能にキャストする必要性を防ぐために、一般的な辞書を使用することができます:
import System.Collections.Generic
hash = Dictionary[of string, callable]()
hash["one"] = def():
print "got one"
fn = hash["one"]
fn()
所属していません StackOverflow