1

関数をハッシュテーブルに格納できるようにしたいと思います。次のようなマップを作成できます。

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

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

func = hash["one"]
func()

これにより、次のエラーメッセージが生成されます。タイプ'object'で式を呼び出すことはできません。どちらもInvoke機能しませんCall

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

4

2 に答える 2

3

ジェネリックディクショナリを使用して、呼び出し可能オブジェクトにキャストする必要をなくすこともできます。

import System.Collections.Generic

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

fn = hash["one"]
fn()
于 2009-07-19T06:58:28.000 に答える
2

Callableタイプにキャストする必要があります:

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

func = hash["one"] as callable
func()
于 2009-07-18T09:54:22.300 に答える