은 89 페이지의 5.7 절은 "=="연산자는 다음과 같이 설명 : 보시다시피, ==주의 깊게 있도록 제작 된 "스칼라에서 nulls의 동등성, odersky 책의 설명이 스칼라 코드와 다른 것처럼 보입니까? 두 번째 버전 "스칼라 프로그래밍의"Odersky 책에서
당신 가장 간단한 규칙으로 수행됩니다 : 먼저 왼쪽에 null이 있는지 확인하고 null이 아닌 경우 equals 메서드를 호출합니다 ... 자동 null 검사가 있으므로, 당신은 (7) "
그런 다음 주"7 "를 자신을 점검 할 필요가 없습니다 :
"자동 검사는 오른쪽을 보지 않지만 인수가 널이면 합리적인 모든 equals 메소드가 false를 반환해야합니다."
null 체크가 RHS를 보지 않는다면, 나는 항상 false로 평가하기 위해 null == 아무 것도 기대하지 않았지만, 시도해 보았고 null == null은 true로 평가됩니다.
이 책은 scala 2.8을 기반으로합니다. 어떤 시점에서 언어가 변경 되었습니까, 아니면 설명을 이해하지 못 했습니까?
내가 사용한 drools 엔진에서 ==는 LHS가 null이고 RHS가 null이 아닌 경우 RHS의 equals 메서드가 LHS를 통과한다는 식으로 해석되었습니다. 가장 합리적인 equals 메서드가 null에 대해 false를 반환해야하지만, drools 엔진이이 문제를 처리하는 방식이 마음에 들었습니다. SQL에서는 null을 사용했습니다! = null.