红色(R2)如何调用名称通过参数传递的函数?

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

我有一个带有多个参数的任意函数,我想从命令行调用它,如下所示:

program myfun 7 24 15

我尝试这样做:

myfun Func: [A B C][...]
ARGS: Probe System/Options/Args
Print Do [ARGS/1 Remove ARGS]

我的想法是,我使用 ARGS/1 检索命令名称,然后将其从参数列表中删除,将其与其余参数放在一个块中,并使用 Do 进行评估。但是,它只返回没有函数名称的参数:

7 24 15
。我还尝试将这两个值复制到不同的变量,但没有成功,而且我无法理解出了什么问题。

rebol red rebol2
1个回答
0
投票

很高兴在这里见到新人。 简而言之:

  1. 作业是“:”。你把它放在错误的令牌上,应该是
    myfun: func [][A B C
  2. system/options/args
    是字符串列表。最好将整个论证本身作为一个字符串。所以用
    system/options/args
  3. 无需重新安排,只需致电
    print do system/options/args

如果使用字符串作为参数调用“do”,则该字符串在执行之前会被标记化并绑定到全局环境。

因此,请在名为 test.r 的文件中尝试此操作

REBOL [] 
args: system/options/args
myfunc: func [ ][ print "from the function" ]
do probe myfunc

并用

rebol test.r myfunc 1 2 3

来调用它
© www.soinside.com 2019 - 2024. All rights reserved.