cond 、if 、when 、case の区别

在 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​:用于基于一个值的多分支选择,适合离散值的情况。
  • Lisp
    37 引用 • 13 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...