Lisp:如何编写具有多个条件的 if 语句?
Lisp: How to write an if statement with multiple conditions?
我了解如何编写带有个别条件的 if 语句。例如:
(if (> a 20))
然而,在网上搜索后,我没有找到任何资源来解释如何编写具有多个条件的 if 语句(例如,检查 a > 20
或 a < 10
)。如何在 Lisp 中编写具有多个条件的 if 语句?
使用 OR
and/or AND
宏来组合条件。
(if (or (> a 20) (< a 10))
;; do something
)
if 特殊形式无论如何都是一样的:
(if test-expression
true-expression
false-expression)
如果您希望在 a
高于 20
或低于 10
时发生某些事情,您只需执行以下操作:
(if (not (<= 10 a 20)) ; same as (or (> 20 a) (< 10 a))
true-expression
false-expression)
但我明白了。如果你有两个表达式,其中一个应该触发,那么你可以使用 or
:
(if (or (> 20 a) (< 10 a))
true-expression
false-expression)
现在 and
和 or
是下一个 ifs 的宏。例如。上面的表达式可以这样写:
(if (> 20 a)
true-expression
(if (< 10 a)
true-expression
false-expression)))
其中 true-expression
两个地方的表达式相同。
我了解如何编写带有个别条件的 if 语句。例如:
(if (> a 20))
然而,在网上搜索后,我没有找到任何资源来解释如何编写具有多个条件的 if 语句(例如,检查 a > 20
或 a < 10
)。如何在 Lisp 中编写具有多个条件的 if 语句?
使用 OR
and/or AND
宏来组合条件。
(if (or (> a 20) (< a 10))
;; do something
)
if 特殊形式无论如何都是一样的:
(if test-expression
true-expression
false-expression)
如果您希望在 a
高于 20
或低于 10
时发生某些事情,您只需执行以下操作:
(if (not (<= 10 a 20)) ; same as (or (> 20 a) (< 10 a))
true-expression
false-expression)
但我明白了。如果你有两个表达式,其中一个应该触发,那么你可以使用 or
:
(if (or (> 20 a) (< 10 a))
true-expression
false-expression)
现在 and
和 or
是下一个 ifs 的宏。例如。上面的表达式可以这样写:
(if (> 20 a)
true-expression
(if (< 10 a)
true-expression
false-expression)))
其中 true-expression
两个地方的表达式相同。