如何比较此案例的名称:
(if (= name '(bill)) (write-line '(over)))
答案 0 :(得分:2)
用于测试相等性的过程取决于要比较的操作数的类型。特别是,=
过程用于比较数字:
(= 1 1)
但事实似乎并非如此。如果name
是符号:
(symbol=? name 'bill)
如果name
是字符串:
(string=? name "bill")
如果name
是单个字符:
(char=? name #\b)
如果名称在列表中:
(member name '(bill))
最后,如果您不确定名称的类型,可以随时使用equal?
:
(equal? name "bill")
答案 1 :(得分:1)
首先,您不太可能希望名称为'(bill)
,这是一个由单个符号'bill
组成的列表。你可能只想直接'bill
。其次,您不能使用=
来比较符号:=
用于数字比较。 symbol=?
可能就是你想要的:
(if (symbol=? name 'bill) ...)
(请注意,还有其他一些平等功能也可以在这里使用,您可能会看到其他人在这里使用eq?
或equal?
代替symbol=?
。)