如何将函数作为红色参数传递? 或者我不需要红色的?
使用
does
我可以定义一个“没有参数或局部变量”的函数
f: does [print 1] do f
>> 1
如何使用(多个)参数来实现此功能?
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
:)。但我知道这是可能的。
如何将函数作为红色参数传递?
这似乎不是您问题的本质,但您可以通过多种方式将函数作为参数传递:
my-func: func [their-func [any-function!]][their-func "Stuff"]
my-func :print
my-func func [thing][probe uppercase thing]
如何使用(多个)参数来实现此功能?
这里有两种可能性。一是申请:
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