typestar

Mutar con mut en Mojo

mut marca un argumento que la función puede cambiar en el lugar, sobre el valor de quien llama.

@fieldwise_init
struct Basket(ImplicitlyCopyable, Movable):
    var count: Int

    def take(mut self, n: Int):
        self.count -= n


def refill(mut basket: Basket, n: Int):
    basket.count += n


def main():
    var basket = Basket(2)
    refill(basket, 5)
    basket.take(1)
    print(basket.count)

Cómo funciona

  1. take(mut self, n: Int) deja que un método escriba en sus propios campos.
  2. refill(mut basket: Basket, n: Int) muta un struct que le pertenece a main.
  3. Las dos ediciones se acumulan, así que basket.count imprime el total corrido.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
269
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 3 de 5 en Semántica de valores; paso 8 de 22 en Structs y traits.

← Anterior Siguiente →