typestar

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

  1. Speaker solo exige que un tipo pueda producir un String.
  2. Dog arma su línea desde un nombre; Clock, desde una hora.
  3. Ninguno de los dos structs sabe del otro, y aun así ambos responden speak().

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 5 en Traits; paso 17 de 22 en Structs y traits.

← Anterior Siguiente →