[SCALA] `##`와`hashCode`의 차이점은 무엇입니까?
SCALA`##`와`hashCode`의 차이점은 무엇입니까?
방법의 차이 ##와 hashCode는 무엇인가?
그들은 상관없이 어떤 클래스 나 해시 코드 내가 사용하는 오버로드 같은 값을 출력되지 않을 것으로 보인다. 이 기호를 찾을 수 없습니다 구글은 ##, 도움이되지 않습니다, 중.
해결법
-
==============================
1."서브 클래스는"AnyVal의 해시 관점에서 제대로 작동하지 않습니다 :
"서브 클래스는"AnyVal의 해시 관점에서 제대로 작동하지 않습니다 :
scala> 1.0.hashCode res14: Int = 1072693248
물론이에 대한 호출에 박스입니다 :
scala> new java.lang.Double(1.0).hashCode res16: Int = 1072693248
우리는 수를 선호 할 수 :
scala> new java.lang.Double(1.0).## res17: Int = 1 scala> 1.0.## res15: Int = 1
우리는 이것이 INT 1 물론이 문제는 자바에서 발생하지 않습니다의 이중 1입니다 주어진 기대한다. 그게 없으면, 우리는이 문제가있는 것입니다 :
Set(1.0) contains 1 //compiles but is false
운 좋게:
scala> Set(1.0) contains 1 res21: Boolean = true
-
==============================
2.해시 코드 스칼라 == 연산자와 일치하지 않기 때문에 ##을 도입 하였다. 다음에 B A ==. ## == B.없이 ##는 A 유형 및 B (맞춤 해시 코드 구현이 올바른지)의 경우. 같은 다른 포스터에 의해 주어진 예에서 볼 수 있듯이 해시 코드에 대한 사실이 아니다.
해시 코드 스칼라 == 연산자와 일치하지 않기 때문에 ##을 도입 하였다. 다음에 B A ==. ## == B.없이 ##는 A 유형 및 B (맞춤 해시 코드 구현이 올바른지)의 경우. 같은 다른 포스터에 의해 주어진 예에서 볼 수 있듯이 해시 코드에 대한 사실이 아니다.
-
==============================
3.## 방법 최선의 노력을 기울이고은 평등과 해시 코드 사이의 계약을 유지하지만, 당신이 복식과 갈망을 비교하는 경우와 같은 경우에 충분한, (스칼라 2.10.2 분명히 아니라고 그냥 다른 포스터의 답변에 추가 할 ) :
## 방법 최선의 노력을 기울이고은 평등과 해시 코드 사이의 계약을 유지하지만, 당신이 복식과 갈망을 비교하는 경우와 같은 경우에 충분한, (스칼라 2.10.2 분명히 아니라고 그냥 다른 포스터의 답변에 추가 할 ) :
> import java.lang._ import java.lang._ > val lng = Integer.MAX_VALUE.toLong + 1 lng: Long = 2147483648 > val dbl = Integer.MAX_VALUE.toDouble + 1 dbl: Double = 2.147483648E9 > lng == dbl res65: Boolean = true > lng.## == dbl.## res66: Boolean = false > (lng.##, lng.hashCode) res67: (Int, Int) = (-2147483647,-2147483648) > (dbl.##, dbl.hashCode) res68: (Int, Int) = (-2147483648,1105199104)
from https://stackoverflow.com/questions/9068154/what-is-the-difference-between-and-hashcode by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스파크 : RDD 모든 가능한 조합의 생산 RDD [(X, X)] [X] (0) | 2019.11.09 |
---|---|
[SCALA] '이' ''와 어떤 유형 / 차이 명시 자기 참조 (0) | 2019.11.09 |
[SCALA] JSON에 행 스파크 (0) | 2019.11.09 |
[SCALA] 빈 / 널 필드 값 새로운 Dataframe 만들기 (0) | 2019.11.09 |
[SCALA] 스칼라에서 익명 함수에서 매개 변수 전에 암시 적 키워드 (0) | 2019.11.09 |