typestar

Transferir la propiedad en Mojo

Ticket no es copiable, así que pasarlo adelante significa entregar la propiedad con ^.

struct Ticket(Movable):
    var holder: String

    def __init__(out self, var holder: String):
        self.holder = holder^


def redeem(var ticket: Ticket) -> String:
    return "redeemed by " + ticket.holder


def main():
    var pass_ = Ticket("Ada")
    print(redeem(pass_^))

Cómo funciona

  1. __init__(out self, var holder: String) toma la propiedad del nombre y lo mueve adentro.
  2. redeem(var ticket: Ticket) declara que consume su argumento.
  3. Quien llama escribe pass_^ para transferir el ticket en vez de copiarlo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
253
Tokens
65
Ritmo de tres estrellas
75 tpm

Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 52 segundos.

Escribe este fragmento

Paso 2 de 5 en Semántica de valores; paso 7 de 22 en Structs y traits.

← Anterior Siguiente →