如何将函数作为参数传递给红色? 或者我不需要红色的那个?
使用does
我可以定义一个函数"没有参数或局部变量"
f: does [print 1] do f
>> 1
如何使用(多个)args进行此操作? does
没有办法,是什么?
我想要类似的东西:(以下不起作用):
; does NOT work
f: does-with-args [x][print x] do f 23
>> 1
在本文的最后一段http://blog.revolucent.net/2009/05/javascript-rebol.html中,作者说"允许函数作为参数传递"所以我很兴奋,但它也只是使用does
:)。但我知道这是可能的。
答案 0 :(得分:3)
如何将函数作为参数传递给红色?
这似乎不是你的问题的本质,但你可以通过几种方式将函数作为参数传递:
my-func: func [their-func [any-function!]][their-func "Stuff"]
my-func :print
my-func func [thing][probe uppercase thing]
如何使用(多个)args进行此操作?
这里有两种可能性。一个是申请:
my-func: func [thing][print uppercase thing]
apply :my-func ["Foo"]
另一种方法是建立一个区块并执行它:
do collect [keep 'my-func keep "Bar"]
do collect [keep :my-func keep "Baz"] ; keeps the function itself
注意:APPLY可能很古怪,我认为还不是Red,值得尝试。