Igualdad y orden en Mojo
__eq__ y __lt__ le enseñan a un struct a responder == y <.
@fieldwise_init
struct Version(ImplicitlyCopyable, Movable):
var major: Int
var minor: Int
def __eq__(self, other: Self) -> Bool:
return self.major == other.major and self.minor == other.minor
def __lt__(self, other: Self) -> Bool:
if self.major != other.major:
return self.major < other.major
return self.minor < other.minor
def main():
var old = Version(1, 4)
var new = Version(1, 10)
print(old == new, old < new)
Cómo funciona
__eq__exige que coincidan tantomajorcomominor.__lt__comparamajorprimero y solo cae aminoren un empate.- Ese desempate es la razón de que
Version(1, 4)quede debajo deVersion(1, 10).
Palabras clave y builtins usados aquí
IntMovabledefifprintreturnselfstructvar
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 419
- Tokens
- 114
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 86 segundos.
Paso 2 de 5 en Operadores; paso 12 de 22 en Structs y traits.