Pular para o conteúdo

Guia 46 de 53

Tipos entre linguagens

Inteiros exatos, records copiados, objetos vivos, callbacks e conversão assíncrona.

Nesta página

Assinaturas extern usam tipos Zolo; corpos usam a linguagem escolhida. As tabelas descrevem funções inline. Imports de módulos nativos usam os tipos reais da declaração, que podem diferir desses defaults.

Tipos escalares

int é um inteiro assinado de 64 bits. Para um parâmetro nativo de 32 bits, use i32. Java e Kotlin usam literais 1L para long/Long; JavaScript e TypeScript usam 1n para bigint. Um number importado aceita um int Zolo apenas quando a conversão é exata e retorna float. Overflow gera erro. nil corresponde a void, Unit, (), None ou ausência de retorno conforme o provider. Java/Kotlin não possuem mapeamento inline de inteiros unsigned.

Provider Zolo int / i64 Zolo float / f64 Zolo str Zolo bool
C# long double string bool
Python int float str bool
JavaScript bigint number string boolean
TypeScript bigint number string boolean
Java long double String boolean
Kotlin Long Double String Boolean
C int64_t double const char * bool
C++ int64_t double std::string bool
Rust i64 f64 String bool
Go int64 float64 string bool

Valores opcionais e coleções

T? representa um valor ou nil. Chaves de maps tipados nessa fronteira são strings: use #{str: T}. Coleções e DTOs copiados não compartilham mutações com o original; todos os elementos precisam de conversões suportadas. C requer adapters explícitos para coleções gerais; [str] usa zolo_strings. Strings C são terminadas em NUL e rejeitam NUL embutido; C++, Rust e Go o preservam. Não retenha views emprestadas após a chamada nem retorne ponteiros para buffers locais.

Provider T? [T] #{str: T}
C# Valor/referência nullable T[] Dictionary<string, T>
Python Valor / None list; tuple results are copied too dict
JavaScript / TypeScript Value or null Array nativo Record com chaves string
Java Boxed nullable primitive or nullable reference Native array Map<String, T>; primitive values are boxed
Kotlin Native T? Array<T> Map<String, T>
C Adapter explícito zolo_value [str] uses zolo_strings; other lists need an adapter Adapter explícito zolo_value
C++ Adapter explícito zolo_value std::vector<T> std::map<std::string, T>
Rust Option<T> Vec<T> std::collections::HashMap<String, T>
Go *T []T map[string]T

Records e objetos vivos

Structs Zolo declarados viram DTOs copiados nos providers gerenciados, Rust e Go. Go gera campos exportados e tags zolo preservando os nomes originais. Structs Rust/Go importados precisam de campos públicos ou exportados. Classes importadas de C#, Python, JS/TS, Java/Kotlin e C++ preservam identidade nativa; construtores usam .new. Um DTO copiado e um objeto vivo são contratos diferentes. Objetos C++ não atravessam módulos compilados independentemente por conversão implícita.

Callbacks e async

Declare async e aguarde com await. C/C++/Rust/Go emprestam callbacks pela duração da chamada; não os armazene nem invoque de uma thread arbitrária. Providers gerenciados usam leases e o scheduler dono. Cancelamento é cooperativo e não interrompe trabalho nativo arbitrário à força. Java exige uma interface funcional explícita para callbacks com mais de dois parâmetros. Result<T,E> importado de Rust e (T,error) de Go expõem o sucesso e propagam falhas pelo canal de erros.

Adapters explícitos

Ponteiros, templates abertos, funções variádicas e ownership não suportado precisam de um wrapper concreto. Any em C/C++ usa zolo_value. Any inline em Rust/Go não fornece um layout nativo e é rejeitado. Alocações wire retornadas manualmente exigem allocator compatível e ZOLO_OWNED. A interface extern C# tipada preserva inteiros; a antiga dotnet.eval/.call usa transporte double para long/ulong e pode perder precisão.

Integrações com linguagens de programação · Dependências e locks

DOCS / OPINIÃO

Esta página deixou alguma pergunta?

Conte onde a explicação perdeu você. A documentação também faz parte da experiência da linguagem.

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br