Eon*_*nil 5 comparison scheme equality
在这个例子中,
> (= 1 1)
#t
> (= 'a 'a)
*** ERROR IN (console)@2.1 -- (Argument 1) NUMBER expected
(= 'a 'a)
1>
Run Code Online (Sandbox Code Playgroud)
如何测试带引号的符号的相等性?
您可以使用任意的eq?,eqv?或equal?.
所有这三个都可以与任何对象一起使用而不会出错(不像=,它只能用于数字).但是,结果将根据您传入的类型而有所不同.但是如果您知道要比较符号,则所有符号都将具有相同的结果.
如果你已经做过任何Java编程,eqv?就像是==和equal?像.equals().简单来说,eqv?是进行身份比较,并equal?进行价值比较.
(并且eq?进行直接指针比较.对于某些实现,它可能比它更快eqv?,理解它有时为相同的数字或字符返回false.对于其他实现,它完全相同eqv?.大多数时候,为了健壮性,你应该坚持使用eqv?进行身份比较,忘记eq?存在.)