Pular para o conteúdo

31 · Recarregamento automático

Reload Básico

O "hello world" do zolo dev: edite um módulo, salve e veja a nova versão em ação sem reiniciar a VM.

Nesta página

Cada demo neste capítulo é um sub-projeto com seu próprio main.zolo e módulos separados. Para executar, abra o diretório no terminal e rode zolo dev:

cd examples/features/21-hot-reload/01-basic-reload
zolo dev main.zolo

O ponto de entrada importa duas funções do módulo greeter e entra num loop de leitura interativo. O segredo está em como use greeter::{greet, farewell} é compilado: cada chamada passa por um live-binding thunk que re-resolve a função na tabela de exportações do módulo — não guarda um ponteiro fixo.

Ponto de entrada: loop de ENTER + importação via live-binding.

main.zolo
Playground
// Feature: basic hot-reload
// Syntax: `zolo dev main.zolo` + edits to the `greeter` module.
// When to use: the "hello world" of `zolo dev` — edit-save-call flow.
//
// Press ENTER to call greet again. Edit greeter.zolo
// in the middle of the loop, save, press ENTER — you see the new code.

use greeter::{greet, farewell}

fn main() {
  greet("zolo dev")
  print("(edit greeter.zolo and save, ENTER to call again, 'q' to quit)")
  while true {
    let line = io::read("*l")
    if line is nil || line == "q" {
      break
    }
    greet("zolo dev")
  }
  farewell("zolo dev")
}

Requer a CLI/host do Zolo — abra no playground ou rode localmente.

O módulo greeter expõe as duas funções com pub fn. Editar a string dentro de greet, salvar e pressionar ENTER já mostra o texto novo — a identidade da tabela de exportações é preservada (identity preserved), então qualquer módulo que já a importou continua válido automaticamente.

Edite a mensagem enquanto o programa roda; o próximo ENTER usa a versão nova.

greeter.zolo
Playground
// Feature: basic hot-reload — simple module
// Syntax: `pub fn name(...)` in an imported file.
// When to use: edit the function and see the new version without restart.
//
// Edit the string below, save, and the next call from main.zolo
// prints the new version. The `LuaState` stays the same — only the
// `greet` function is swapped in the `greeter` module's exports table.

pub fn greet(name: str) {
  print("Hello, {name}! (edit this message and save)")
}

pub fn farewell(name: str) {
  print("Bye, {name}.")
}

Requer a CLI/host do Zolo — abra no playground ou rode localmente.

Desafio

Enquanto o programa roda, adicione uma terceira função pub fn shout(name) em greeter.zolo que imprime em maiúsculas. Chame-a a partir do main.zolo (basta adicionar shout ao use) e salve os dois arquivos em sequência. Observe a ordem das mensagens reloaded: no terminal.

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br