typestar

Hooks de copia y destrucción en Mojo

Un struct puede definir qué significan para él copiarse y destruirse.

struct Handle(Copyable, Movable):
    var name: String

    def __init__(out self, name: String):
        self.name = name

    def copy(self) -> Self:
        return Handle(self.name + "-copy")

    def __del__(deinit self):
        print("closing", self.name)


def main():
    var primary = Handle("db")
    var backup = primary.copy()
    print(primary.name, backup.name)

Cómo funciona

  1. copy(self) -> Self satisface Copyable y renombra el duplicado.
  2. __del__(deinit self) corre cuando un valor muere, e imprime al cerrarse.
  3. Los dos handles se destruyen justo después de su último uso, el más nuevo primero.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
323
Tokens
91
Ritmo de tres estrellas
75 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →