如何传递带有红色参数的函数?

问题描述 投票:0回答:1

如何将函数作为红色参数传递? 或者我不需要红色的?

使用

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
:)。但我知道这是可能的。

rebol red
1个回答
3
投票

如何将函数作为红色参数传递?

这似乎不是您问题的本质,但您可以通过多种方式将函数作为参数传递:

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
© www.soinside.com 2019 - 2024. All rights reserved.