方案 - 如何在 cond 中读取字符串



我只想知道是否可以读取 Scheme 中的字符串,例如code == "SST"

这是我的代码:

(display "Enter the Code")(define code(read))


(display "Quantity:")(define qty(read))


(cond((= code 1)(define price 20.00))我尝试这个((= code LST)(define price 25.00))只能读取
数字,但没有任何反应
(else 0))


(define total(* price qty))
(display "Total Price:")(display total)

如果用户输入"SST",它将等于价格20.00,而"LST"等于价格25.00
我使用 Repl.it 作为编译器。

read

不读取字符串或字节。它读取方案代码,并将方案代码作为数据返回。例如。如果输入"SST"则它将成为字符串"SST",但是如果您输入SST它将在符号SST中读取。

=仅适用于数字。如果您尝试将非数字与=进行比较,程序可能会停止。您可以使用equal?来比较应该看起来相同的内容,它也适用于数字。

define不可能在任何地方。如果你把它放在顶层,它将成为全局绑定,如果你把它放在letprocedures或类似的东西,它们将成为局部绑定。归仁 您有两种可能的解决方案:

;; make cond the expression
(define price 
(cond 
((equal? code 1) 20.0)
((equal? code 'LST) 25.0)
(else 0)))
;; define it once, set! it from other places
(define price 0)
(cond 
((equal? code 1) (set! price 20.0))
((equal? code 'LST) (set! price 25.0)))

相关内容

  • 没有找到相关文章