Dos structs, un trait en Mojo
Tipos sin parentesco pueden satisfacer el mismo trait, cada uno a su manera.
trait Speaker:
def speak(self) -> String:
...
@fieldwise_init
struct Dog(ImplicitlyCopyable, Movable, Speaker):
var name: String
def speak(self) -> String:
return self.name + " says woof"
@fieldwise_init
struct Clock(ImplicitlyCopyable, Movable, Speaker):
var hour: Int
def speak(self) -> String:
return "the time is " + String(self.hour)
def main():
print(Dog("Rex").speak())
print(Clock(9).speak())
Cómo funciona
Speakersolo exige que un tipo pueda producir unString.Dogarma su línea desde un nombre;Clock, desde una hora.- Ninguno de los dos structs sabe del otro, y aun así ambos responden
speak().
Palabras clave y builtins usados aquí
IntMovableStringdefprintreturnselfstructtraitvar
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 408
- Tokens
- 103
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 82 segundos.
Paso 2 de 5 en Traits; paso 17 de 22 en Structs y traits.