在这个例子中,
> (= 1 1)
#t
> (= 'a 'a)
*** ERROR IN (console)@2.1 -- (Argument 1) NUMBER expected
(= 'a 'a)
1>
如何测试引用符号的相等性?
最佳答案
您可以使用 eq?
、 eqv?
或 equal?
中的任何一个。
所有这三个都可以与任何对象一起使用而不会出错(与 =
不同,它只能与数字一起使用)。但是,结果会因您传入的类型而异。但如果您知道要比较符号,则所有符号都将具有相同的结果。
如果你做过任何 Java 编程, eqv?
就像 ==
, equal?
就像 .equals()
。简单来说,eqv?
做身份比较,equal?
做值比较。
(并且 eq?
进行直接指针比较。对于某些实现,它可能比 eqv?
快,但要理解它有时会为相等的数字或字符返回 false。对于其他实现,它与 eqv?
完全相同。大多数情况下,为了健壮性,您应该坚持使用 eqv?
进行身份比较,而忘记 eq?
存在。)
关于comparison - 如何测试Scheme中引用符号的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328468/