Pular para o conteúdo

Reload Básico

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.

Buscar no Zolo

9 resultados

enespt-br