【发布时间】:2009-08-24 16:58:54
【问题描述】:
rebol 中的 do 函数似乎可以接受无限的参数。我可以用我自己的函数(不使用参数块)吗?
【问题讨论】:
标签: rebol
rebol 中的 do 函数似乎可以接受无限的参数。我可以用我自己的函数(不使用参数块)吗?
【问题讨论】:
标签: rebol
无法定义具有可变数量参数的函数。此 Rebol 邮件列表线程 http://www.rebol.org/ml-display-thread.r?m=rmlDTXB 中的最后一条消息有解释。
do 函数也接受一个参数:
>> ? do
USAGE:
DO value /args arg /next
DESCRIPTION:
Evaluates a block, file, URL, function, word, or any other value.
DO is a native value.
ARGUMENTS:
value -- Normally a file name, URL, or block (Type: any)
REFINEMENTS:
/args -- If value is a script, this will set its system/script/args
arg -- Args passed to a script. Normally a string. (Type: any)
/next -- Do next expression only. Return block with result and new position.
【讨论】:
你是对的,在 REBOL 中有可变参数函数,一个例子是 DO 函数。在 R2 中,甚至 MAKE 函数也是可变参数的。然而,函数规范方言不允许您定义自己的可变参数函数,甚至没有计划这样的功能。
【讨论】:
f 1 2 3 与 e.g. 进行比较是错误的C f(1, 2, 3)。事实上,如果你使用与 C 中类似的复杂语法,你可以在 REBOL 中做任何你想做的事情,使用 f [1 2 3],在 REBOL 中实际上只是一个一元调用,没有无论您在块中放入了多少“参数”。使用这种语法,您可以很容易地发现,您实际上比 C 语言具有更高的表达能力,因为顺序、数量或任何其他“参数属性”都不受限制。