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
__init__(out self, var holder: String)toma la propiedad del nombre y lo mueve adentro.redeem(var ticket: Ticket)declara que consume su argumento.- Quien llama escribe
pass_^para transferir el ticket en vez de copiarlo.
Palabras clave y builtins usados aquí
MovableStringdefprintreturnselfstructvar
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.
Paso 2 de 5 en Semántica de valores; paso 7 de 22 en Structs y traits.