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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top