Comme le demande Ordered
trait
, la méthode equals
sur la classe BigDecimal
de Scala est cohérente avec la commande. Cependant, le hashcode est simplement pris dans le java.math.BigDecimal
enveloppé et est donc incompatible avec des égaux.Est-ce que BigDecimal de Scala viole le contrat equals/hashCode?
object DecTest {
def main(args: Array[String]) {
val d1 = BigDecimal("2")
val d2 = BigDecimal("2.00")
println(d1 == d2) //prints true
println(d1.hashCode == d2.hashCode) //prints false
}
}
Je ne trouve aucune référence à ce problème étant connu. Est-ce que je manque quelque chose?
Celui qui est upvoting cela doit aller lire sur Scala! '==' dans Scala est équivalent à '.equals' dans Java. ** Cette réponse est fausse ** –
* @ John * - as-tu essayé d'exécuter ta réponse dans Scala? Ce n'est pas correct! 'scala.BigDecimal' et' java.math.BigDecimal' sont des choses différentes –
* @ John * - désolé de carpe: si vous suivez votre lien, vous pouvez voir que la méthode 'equals' passe à Java' BigDecimal.compare 'méthode –