我试图了解如何将case
命令与Scheme中的变量一起使用
(define CONSTANT 5)
(define x 5)
(case x ((CONSTANT) "equal") (else "not equal"))
上面的示例导致“不相等”。为什么?
请注意,以下示例有效:
(define CONSTANT 5)
(define x 5)
(case x ((5) "equal") (else "not equal"))
如果您查看documentation,则表示:
这里的关键词是“ quoted”。子句中的表达式不被评估,按原样使用。因此,实际上您正在尝试与symbol equal?
进行匹配。我们可以验证一下:
val-expr
UPDATE:从注释看来,您需要将元素与常量列表进行匹配。'CONSTANT
+ (define x 'CONSTANT)
(case x
((CONSTANT) "equal")
(else "not equal"))
=> "equal"
会更好:
cond