【问题标题】:Rebol function and unlimited argumentsRebol 函数和无限参数
【发布时间】:2009-08-24 16:58:54
【问题描述】:

rebol 中的 do 函数似乎可以接受无限的参数。我可以用我自己的函数(不使用参数块)吗?

【问题讨论】:

    标签: rebol


    【解决方案1】:

    无法定义具有可变数量参数的函数。此 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.
    

    【讨论】:

      【解决方案2】:

      你是对的,在 REBOL 中有可变参数函数,一个例子是 DO 函数。在 R2 中,甚至 MAKE 函数也是可变参数的。然而,函数规范方言不允许您定义自己的可变参数函数,甚至没有计划这样的功能。

      【讨论】:

      • Rebol 应该比其他语言更“富有表现力”,所以不能这样做或有可选参数是令人沮丧的。 C#4 现在至少已经意识到这一点 davidhayden.com/blog/dave/archive/2009/06/02/… 我不是 rebol 的设计者,我只是一个用户,但作为一个用户,我知道我真正需要什么才能提高效率,这是我期待的东西之一也。或者至少应该可以挂钩控制台来构建我们自己的语法处理,但这也是不可能的。
      • Console 是 rebol 中的瑰宝,遗憾的是无法通过一些钩子轻松自定义它,这使 wordpress 成功——虽然 wordpress 不是一种编程语言,但我的意思是原则是关键。
      • 将 REBOL f 1 2 3 与 e.g. 进行比较是错误的C f(1, 2, 3)。事实上,如果你使用与 C 中类似的复杂语法,你可以在 REBOL 中做任何你想做的事情,使用 f [1 2 3],在 REBOL 中实际上只是一个一元调用,没有无论您在块中放入了多少“参数”。使用这种语法,您可以很容易地发现,您实际上比 C 语言具有更高的表达能力,因为顺序、数量或任何其他“参数属性”都不受限制。
      • 这是 4 KEYPRESS 和 2 只手这样做 :) 当您将控制台用作最终用户 GUI 时,这在可访问性问题中是最重要的。
      • 我没有使用控制台来编写我的 REBOL 脚本。为此,我正在使用一些文本编辑器。
      猜你喜欢
      • 2013-03-24
      • 2012-03-09
      • 2017-03-01
      • 2011-09-17
      • 2014-06-11
      • 1970-01-01
      • 2011-06-27
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多