1

我希望能够将函数存储在哈希表中。我可以创建一个像这样的地图:

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

但我不能称之为:

func = hash["one"]
func()

这会产生以下错误消息:无法在类型 'object' 上调用表达式。既不工作Invoke也不Call工作。

我该怎么做 ?从我的猜测来看,存储的函数应该被转换为某种东西。

4

2 回答 2

3

您还可以使用通用 Dictionary 来防止需要转换为可调用对象:

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 回答