Saltar al contenido

12 · Programación Orientada a Objetos

Expón una capacidad en el retorno

Usa -> impl Store para exponer el trait declarado y conservar privada la implementación concreta. El compilador comprueba una representación concreta de retorno para la función. El llamador puede usar los métodos prometidos por el trait; los campos y los métodos adicionales quedan inaccesibles. Llama a un método opaco directamente; usa || store.read(key) cuando necesites un callback. Extraer store.read sin su receptor se rechaza.

En esta página

Usa -> impl Store para exponer el trait declarado y conservar privada la implementación concreta. El compilador comprueba una representación concreta de retorno para la función. El llamador puede usar los métodos prometidos por el trait; los campos y los métodos adicionales quedan inaccesibles. Llama a un método opaco directamente; usa || store.read(key) cuando necesites un callback. Extraer store.read sin su receptor se rechaza.

Ejemplo completo

Expón una capacidad en el retorno.

14-opaque-returns.zolo
Playground
// A caller needs a settings store, without depending on its storage fields.

trait Store {
    fn read(self, key: str) -> str?
}

struct MemoryStore {
    theme: str,
    revision: int,
}

impl Store for MemoryStore {
    fn read(self, key: str) -> str? {
        if key == "theme" { self.theme } else { nil }
    }
}

impl MemoryStore {
    fn generation(self) -> int = self.revision
}

fn settings() -> impl Store = MemoryStore { theme: "dark", revision: 2 }

let store = settings()
print("Theme: {store.read("theme") ?? "light"}")
print("Font: {store.read("font") ?? "system"}")
// The returned value exposes read; theme, revision and generation stay private.

Referencia

Referencia · Programa fuente

zolo run examples/features/40-syntax-fourth/14-opaque-returns.zolo --no-cache

Consulta también

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br