,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?
중 하나를 사용합니다.
3 개 모두 오류없이 모든 개체와 함께 사용할 수 있습니다 (숫자로만 사용할 수있는 =
과는 다릅니다). 그러나 결과는 전달하는 유형에 따라 다릅니다. 그러나 기호를 비교한다는 것을 알고 있으면 모두 동일한 결과를 갖습니다.
Java 프로그래밍을 완료 한 경우 eqv?
은 ==
이고 equal?
은 .equals()
과 같습니다. 간단히 말해서 eqv?
은 ID 비교를 수행하고 equal?
은 값 비교를 수행합니다.
(그리고 eq?
은. 일부 구현을 위해, 그것은 때때로 동일한 숫자 또는 문자에 대해 false를 반환하는 이해, eqv?
보다 빠르게 할 수있다. 직선 업 포인터 비교를 수행 다른 구현의 경우, eqv?
정확히 동일합니다. 대부분의 경우 견고성을 위해 ID 확인을 수행 할 때는 eqv?
을 사용해야하며 eq?
이 있다는 것을 잊어서는 안됩니다.