2016-10-19 7 views
3

関数を引数として赤で渡すにはどうすればよいですか? それは赤では必要ないでしょうか? doesを使用してargsを含む関数を赤で渡すにはどうすればよいですか?

私はどのように私は(複数の)引数でこの作業を行うことができます

「引数やローカル変数なしで」

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 :)を使っているだけです。しかし、私はそれが可能であることを学んだ。

答えて

3

関数を引数として赤で渡すにはどうすればよいですか?

これはあなたの質問の本質である、しかし、あなたはいくつかの方法で引数として関数を渡すことができていないようだ:

私はこの作業を行うことができますどのように
my-func: func [their-func [any-function!]][their-func "Stuff"] 
my-func :print 
my-func func [thing][probe uppercase thing] 

(複数の)args?

ここには2つの可能性があります。一つは適用されている:

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 

NB:適用風変わりなことができ、私はまだのように赤であるとは思わない、実験の価値。

関連する問題