在 Common Lisp 中,cond
、if
、when
和 case
都是用于控制流的构造,但它们适用的场景和语法有所不同。以下是它们的比较:
1. if
-
用途:用于条件判断,有两个分支(真和假)。
-
语法:
(if condition then-clause else-clause)
-
示例:
(if (> x 10) (print "x is greater than 10") (print "x is 10 or less"))
2. cond
-
用途:用于多个条件判断,适用于复杂的条件结构。
-
语法:
(cond (condition1 result1) (condition2 result2) (t default-result)) ; t 表示 "true",用于默认情况
-
示例:
(cond ((> x 10) (print "x is greater than 10")) ((< x 5) (print "x is less than 5")) (t (print "x is between 5 and 10")))
3. when
-
用途:用于单一条件判断,类似于
if
但不需要提供假分支。如果条件为真,执行多个表达式。 -
语法:
(when condition body1 body2 ...)
-
示例:
(when (> x 10) (print "x is greater than 10") (print "This is true!"))
4. case
-
用途:用于多个值的选择,基于一个表达式的值进行分支。适合处理离散的值。
-
语法:
(case key (value1 result1) (value2 result2) (t default-result)) ; t 表示 "true",用于默认情况
-
示例:
(case day-of-week (1 (print "Monday")) (2 (print "Tuesday")) (3 (print "Wednesday")) (t (print "Another day")))
总结
-
if
:适用于简单的二元条件判断。 -
cond
:适用于复杂的多条件判断。 -
when
:用于单一条件判断,执行多个表达式。 -
case
:用于基于一个值的多分支选择,适合离散值的情况。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于