【问题标题】:What are the differences between parentheses and `apply`?括号和`apply`有什么区别?
【发布时间】:2017-09-03 14:02:46
【问题描述】:

要调用带有一些参数的函数,我们可以简单地使用(funcname arg1 arg2 ...)(apply funcname '(arg1 arg2 ...))。两种方式有什么区别?谢谢。

【问题讨论】:

    标签: scheme


    【解决方案1】:

    不同之处在于apply 的参数以列表形式给出。因此,如果您已经有一个列表,您可以使用(apply f my-list) 调用带有列表中的参数的f

    【讨论】:

    • 谢谢。顺便问一下,你如何解包一个列表,以便给定的列表可以用作括号内的函数的参数?
    • @tim 改用apply。这就是它存在的原因。在 Ruby 或 Python 中使用 f(*arglist) 的地方,在 Scheme 中使用 (apply f arglist)
    • 谢谢。我明白。只是好奇如何解压列表?
    • 你需要解释一下你所说的“解包”是什么意思。您可以使用 car 和 cdr 以及同源词访问列表的成员。大多数方案还附带一个模式匹配宏,它将(除其他外)解构列表。
    猜你喜欢
    • 2013-04-01
    • 2021-05-16
    • 1970-01-01
    • 2021-05-12
    • 2014-04-18
    • 1970-01-01
    • 2016-06-26
    • 2014-09-30
    相关资源
    最近更新 更多