有条件地在宏中调用键控参数

拉尔兹

是否可以有条件地使用\调用关键字?本质上代替:

(defun test (var)
  (if var
    (some-function :para var)
    (some-function)))

我想要这样的东西:

(defmacro test (var)
  `(some-function (if ,var [add-keyword])))

函数的位置(出于快速简单的示例目的):

(defun some-function (&key para)
  (cond ((equal para 'yes) "yes")
        ((null para) "no")
        (t "other")))
和罗伯逊

通常可以以不需要执行此操作的方式编写代码(只需通过nil或使用默认值即可)。但是,如果确实无法避免,则可以使用apply

(apply #'some-function args... (when var (list :para var)))

如果你想传递的关键字参数,你应该使用一个&rest带有参数apply&allow-other-keys如果要将它们传递给CLOS中的下一个方法,则应使用call-next-method通常,最好在编译时就知道一组关键字参数,因为这样编译器可以使事情比未知情况快得多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有条件地删除宏

来自分类Dev

如何有条件地调用sbt中的任务?

来自分类Dev

有条件地调用R中的特定列

来自分类Dev

有条件地调用指令

来自分类Dev

有条件地调用指令

来自分类Dev

有条件地定义C函数宏

来自分类Dev

SAS 宏 - 有条件地打印结果

来自分类Dev

是否可以将预处理器有条件地放在C宏中?

来自分类Dev

我可以通过可移植的方式有条件地在Makefile中定义宏吗?

来自分类Dev

使用C中的宏删除(或有条件地附加)const修饰符

来自分类Dev

有条件地删除lisp宏中的let-binding

来自分类Dev

JavaScript-有条件地调用函数

来自分类Dev

在AngularJS中有条件地调用函数

来自分类Dev

如何有条件地调用spring验证器

来自分类Dev

在C ++中有条件地调用JNI

来自分类Dev

如何有条件地调用SwiftUI NavigationLink?

来自分类Dev

在AngularJS中有条件地调用函数

来自分类Dev

有条件地从C ++调用Lua函数

来自分类Dev

有条件地调用Linq扩展方法

来自分类Dev

有条件地调用 cv::VideoCapture 构造函数

来自分类Dev

在Javascript中有条件地调用函数?

来自分类Dev

有条件地向函数提供“凭据”参数

来自分类Dev

有条件地执行来自参数的代码

来自分类Dev

argparse可以有条件地解析参数吗?

来自分类Dev

TypeScript:使函数参数有条件地为可选

来自分类Dev

有条件地执行来自参数的代码

来自分类Dev

仅在C ++ 11中从B派生时,如何有条件地调用B :: f?

来自分类Dev

有条件地调用Vagrantfile中的其他规定

来自分类Dev

有条件地在sql plus中调用sql脚本