【问题标题】:Effectively Splicing a List of Arguments into a Function Call有效地将参数列表拼接到函数调用中
【发布时间】:2019-08-31 16:36:39
【问题描述】:

一些 Common Lisp 列表和序列函数可以将多个列表或序列作为其最终参数。例如:

(mapcar #'list '(a b) '(c d) '(e f)) => ((a c e) (b d f))

但是如果最终的参数已经合并成一个列表/序列,如((a b) (c d) (e f) ...),你怎么能得到相同的结果(就像列表/序列被拼接到原始函数中一样)?还有比写宏更直接的方法吗?

编辑:我想我找到了一种方法:(apply #'funcall #'mapcar #'list '((a b) (c d) (e f))),但可能还有其他方法。

【问题讨论】:

  • #'funcall 是不必要的。

标签: common-lisp sequence


【解决方案1】:

您使用apply,它将一个可扩展参数列表指示符作为最后一个参数

你的例子:

(apply #'mapcar #'list '((a b) (c d) (e f)))

【讨论】:

  • This answer(免责声明,我写的)有更多可扩展参数列表的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 2017-03-29
  • 2015-10-01
  • 1970-01-01
相关资源
最近更新 更多