typestar

Métodos estáticos como constructores en Mojo

@staticmethod le da al struct constructores con nombre, que se leen mejor.

@fieldwise_init
struct Temperature(ImplicitlyCopyable, Movable):
    var celsius: Float64

    @staticmethod
    def freezing() -> Temperature:
        return Temperature(0.0)

    @staticmethod
    def from_fahrenheit(degrees: Float64) -> Temperature:
        return Temperature((degrees - 32.0) * 5.0 / 9.0)


def main():
    var boiling = Temperature.from_fahrenheit(212.0)
    print(Temperature.freezing().celsius, boiling.celsius)

Cómo funciona

  1. freezing no toma self y devuelve un Temperature fijo.
  2. from_fahrenheit convierte antes de construir, escondiendo la aritmética.
  3. Los dos se llaman sobre el tipo mismo: Temperature.freezing().

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
391
Tokens
74
Ritmo de tres estrellas
80 tpm

Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 56 segundos.

Escribe este fragmento

Paso 5 de 5 en Un primer struct; paso 5 de 22 en Structs y traits.

← Anterior Siguiente →