Saltar al contenido

Guía 46 de 53

Tipos entre lenguajes

Enteros exactos, records copiados, objetos vivos, callbacks y conversión asíncrona.

En esta página

Las firmas extern usan tipos Zolo; los cuerpos usan el lenguaje elegido. Las tablas describen funciones inline. Los imports de módulos nativos usan los tipos reales de la declaración, que pueden diferir de estos defaults.

Tipos escalares

int es un entero con signo de 64 bits. Para un parámetro nativo de 32 bits usa i32. Java y Kotlin usan literales 1L para long/Long; JavaScript y TypeScript usan 1n para bigint. Un number importado acepta int solo si la conversión es exacta y devuelve float. El desbordamiento genera error. nil corresponde a void, Unit, (), None o ausencia de retorno según el provider. Java/Kotlin no tienen mapeo inline de enteros 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 opcionales y colecciones

T? representa un valor o nil. Las claves de maps tipados en este límite son cadenas: usa #{str: T}. Las colecciones y DTOs copiados no comparten mutaciones con el original; todos los elementos necesitan conversiones admitidas. C requiere adaptadores explícitos para colecciones generales; [str] usa zolo_strings. Las cadenas C terminan en NUL y rechazan NUL incrustado; C++, Rust y Go lo conservan. No retengas views prestadas tras la llamada ni devuelvas punteros a buffers locales.

Provider T? [T] #{str: T}
C# Valor/referencia nullable T[] Dictionary<string, T>
Python Valor / None list; tuple results are copied too dict
JavaScript / TypeScript Value or null Array nativo Record con claves 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 Adaptador explícito zolo_value [str] uses zolo_strings; other lists need an adapter Adaptador explícito zolo_value
C++ Adaptador 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 y objetos vivos

Los structs Zolo declarados se convierten en DTOs copiados en los providers gestionados, Rust y Go. Go genera campos exportados y tags zolo que conservan los nombres originales. Los structs Rust/Go importados necesitan campos públicos o exportados. Las clases importadas de C#, Python, JS/TS, Java/Kotlin y C++ conservan identidad nativa; los constructores usan .new. Un DTO copiado y un objeto vivo son contratos distintos. Los objetos C++ no cruzan módulos compilados independientemente por conversión implícita.

Callbacks y async

Declara async y espera con await. C/C++/Rust/Go prestan callbacks durante la llamada; no los almacenes ni invoques desde una thread arbitraria. Los providers gestionados usan leases y el scheduler dueño. La cancelación es cooperativa y no interrumpe trabajo nativo arbitrario por la fuerza. Java necesita una interfaz funcional explícita para callbacks con más de dos parámetros. Result<T,E> importado de Rust y (T,error) de Go exponen el éxito y propagan fallos por el canal de errores.

Adaptadores explícitos

Punteros, templates abiertos, funciones variádicas y propiedad no admitida necesitan un wrapper concreto. Any en C/C++ usa zolo_value. Any inline en Rust/Go no proporciona un layout nativo y se rechaza. Las asignaciones wire devueltas manualmente necesitan allocator compatible y ZOLO_OWNED. La interfaz extern C# tipada conserva enteros; la antigua dotnet.eval/.call transporta long/ulong como double y puede perder precisión.

Integraciones con lenguajes de programación · Dependencias y locks

DOCS / OPINIÓN

¿Esta página dejó alguna pregunta?

Cuéntanos dónde te perdió la explicación. La documentación también forma parte de la experiencia del lenguaje.

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br