どのように私はブーにディスパッチテーブルを作成することができますか?

StackOverflow https://stackoverflow.com/questions/1147111

  •  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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top