我只想知道是否可以读取 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
不可能在任何地方。如果你把它放在顶层,它将成为全局绑定,如果你把它放在let
,procedures
或类似的东西,它们将成为局部绑定。归仁 您有两种可能的解决方案:
;; 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)))