【问题标题】:Displaying a string while using cond in Lisp在 Lisp 中使用 cond 时显示字符串
【发布时间】:2010-09-22 09:37:19
【问题描述】:

我刚开始使用 Lisp,需要一些帮助。这在技术上是家庭作业,但我试了一下,得到了一些我想要的东西:

(defun speed (kmp)  
  (cond ((> kmp 100) "Fast")    
        ((< kmp  40) "Slow") 
        (t           "Average")))

但是,如果我运行程序,它会显示 "Average" 而不仅仅是 Average(不带引号)。

如何让它显示不带引号的字符串?

【问题讨论】:

    标签: string lisp common-lisp


    【解决方案1】:

    您可以使用符号代替字符串。但请记住,符号将被转换为大写:

    > 'Average
    AVERAGE 
    

    如果您关心大小写或想嵌入空格,请使用format

     > (format t "Average")
     Average
    

    【讨论】:

      【解决方案2】:

      read-eval-print 循环显示函数的返回值,它是 cond 分支中的字符串之一。通过用双引号将字符串括起来,以可读的方式打印。

      您可以使用 (write-string (speed 42))。不用担心它还会在双引号中显示字符串 - 这是 write-string 的返回值,显示在无引号输出之后。

      【讨论】:

        【解决方案3】:

        你也可以用符号代替字符串:

        (defun speed (kmp)  
          (cond ((> kmp 100) 'fast)    
                ((< kmp  40) 'slow) 
                (t           'average)))
        

        符号默认是大写的,所以内部快就是快。

        您可以在任何情况下使用任何字符使用竖线转义来编写任何符号:

        |The speeed is very fast!|
        

        Above 是 Common Lisp 中的一个有效符号,并在内部存储,就像您在保留大小写的情况下编写它一样。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-18
          • 1970-01-01
          • 1970-01-01
          • 2021-01-11
          • 2019-07-16
          • 1970-01-01
          相关资源
          最近更新 更多