Differenza tra <=> e == in Ruby?
-
25-10-2019 - |
Domanda
Quali sono le loro differenze? Provenendo da un ambiente Java, sembra a me <=> è lo stesso pari di Java (), mentre == è per il confronto diretto riferimento. Questo è giusto?
Soluzione
==
solo misure se due oggetti sono uguali, mentre <=>
deve restituire -1 se il primo oggetto è più piccolo, 0 se sono uguali, e 1 se il primo oggetto è maggiore.
Se si definisce un metodo <=>
per la classe, si otterrà tutti gli altri operatori di confronto definiti come bene (==
, <
, >
, e così via).
Altri suggerimenti
Non posso dire che non sto cercando di promuovere me stesso, ma ho scritto un tutorial completo lungo di operatori di confronto e di uguaglianza in Ruby: "ruby Nozioni di base - gli operatori di uguaglianza in ruby"
In lì si può vedere le differenze tra tutti gli operatori di uguaglianza, tra cui <=>, == e === (e le implicazioni della loro attuazione, compresa l'implementazione del metodo hash).
==
è come equals
di Java, mentre <=>
è come compareTo
. ==
mette a confronto i due oggetti e restituisce se sono equivalenti. a <=> b
mette a confronto i due oggetti e restituisce 1 se a
è più grande, 0 se sono uguali e se -1
b
è più grande.