首页 > 解决方案 > 什么是 lisp/scheme 等价于 pass 或“什么都不做”

问题描述

我想在方案中执行以下模式:

if N > 0:
    pass
else:
    do-function()

目前我把它模拟成这样:

(if (> N 0) pass?? (do-function))

在计划中“无所事事”的正确方法是什么,但将其保留为占位符,以便我知道这是故意的(而不是更改topasscontinue等)return;ifif not N > 0if N<=0

标签: schemelisp

解决方案


你可以添加一个你喜欢的虚拟表情,

(if (> n 0) '() (do-something))

或糖衣,

(define pass '())
(if (> n 0) pass (do-something))

但是 Common Lisp 和 Scheme 中都有一些结构可以清楚地表达意图而不会造成混乱 -unlesswhen

(unless (> n 0) (do-something))
(when (<= n 0) (do-something))

如果不采用分支,则该值nil在 Common Lisp 中,而在 Scheme 中未指定(即一些依赖于实现的值)。


推荐阅读