(case 'x
[(x) "ex"]
[('x) "quoted ex"])
我认为输出为"quoted ex"
,但实际上为"ex"
。为什么'x
匹配x
但不匹配'x
?
答案 0 :(得分:1)
在第一种情况下,documentation(强调我的名字)中已经引用了(x)
:
selected子句是第一个带有 datum 的子句,其 {
quoted
形式为equal?
至val-expr
的结果。
因此,('x)
被双引号引起来。如果要匹配第二种情况,则必须执行以下操作:
(case ''x
[(x) "ex"]
[('x) "quoted ex"])
=> "quoted ex"
换句话说,代码中的第一个条件是测试(equal? 'x 'x)
是否被测试,第二个条件是测试(equal? 'x ''x)
,显然只有第一个匹配。