4
在這個例子中,如何測試Scheme中引用符號的相等性?
> (= 1 1)
#t
> (= 'a 'a)
*** ERROR IN (console)@2.1 -- (Argument 1) NUMBER expected
(= 'a 'a)
1>
如何我可以測試引用符號的平等?
在這個例子中,如何測試Scheme中引用符號的相等性?
> (= 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?
存在。)