"podklasy" od AnyVal
nie zachowują prawidłowo z perspektywy mieszający:
scala> 1.0.hashCode
res14: Int = 1072693248
Oczywiście jest to pudełkowej do wywołania:
scala> new java.lang.Double(1.0).hashCode
res16: Int = 1072693248
może Wolimy to być :
scala> new java.lang.Double(1.0).##
res17: Int = 1
scala> 1.0.##
res15: Int = 1
Powinniśmy xpect to, biorąc pod uwagę, że int
1 jest również double
1. Oczywiście ten problem nie pojawia się w Javie. Bez niego musielibyśmy ten problem:
Set(1.0) contains 1 //compiles but is false
szczęście:
scala> Set(1.0) contains 1
res21: Boolean = true
'1,0 hashCode' V' 1,0 ## 'v' 1 hashCode' V '1 ##' - http://www.scala-lang.org/api/current/ scala/Any.html – Debilski
Mały offtopic, ale możesz szukać takich symboli za pomocą [SymbolHound] (http://www.symbolhound.com/). –
Ah ok. Tak więc, '1.hashCode'' == '' 1. ## 'i' 1.2.hashCode' '==' '. 1.2. ##'. Jedyną rzeczą, która zachowuje się inaczej, jest '1.0.hashCode''! = '' 1.0. ## '(więc '##' jest lepiej przystosowany do porównywania liczb). –