typestar

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

  1. __eq__ exige que coincidan tanto major como minor.
  2. __lt__ compara major primero y solo cae a minor en un empate.
  3. Ese desempate es la razón de que Version(1, 4) quede debajo de Version(1, 10).

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 5 en Operadores; paso 12 de 22 en Structs y traits.

← Anterior Siguiente →