【发布时间】:2014-03-25 13:15:13
【问题描述】:
我正在尝试在 Rebol 3 中创建一个函数调度程序,以便程序接收到的每个字符串都有一个要调用的关联函数。
例如:
handlers: make map! [
"foo" foo-func
"bar" bar-func
]
其中foo-func 和bar-func 是函数:
foo-func: func [ a b ] [ print "foo" ]
bar-func: func [ a b ] [ print "bar" ]
思路是把select函数从字符串开始,所以:
f: select handlers "foo"
这样执行f 与执行foo-func 相同,然后使用一些参数调用f:
f param1 param2
我尝试引用 map! 中的单词,或者使用 get-words 但没有成功。
在控制台上使用get-word!,而不通过map!,它可以工作:
>> a: func [] [ print "Hello world!" ]
>> a
Hello world!
>> b: :a
>> b
Hello world!
任何帮助表示赞赏。
【问题讨论】:
-
;这个也可以 foo: func [] [print "hello"] do get in system/contexts/user to-word "foo"