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
freezingno tomaselfy devuelve unTemperaturefijo.from_fahrenheitconvierte antes de construir, escondiendo la aritmética.- Los dos se llaman sobre el tipo mismo:
Temperature.freezing().
Palabras clave y builtins usados aquí
Float64Movabledefprintreturnstructvar
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.
Paso 5 de 5 en Un primer struct; paso 5 de 22 en Structs y traits.