Saltar a contenido

Referencia de tipos

La tabla de tipos, en ambos sentidos. Cualquier cosa que no esté aquí es un diagnóstico en tiempo de generación que nombra fichero, línea y columna.

Tipo V Tipo Python Sentido y notas
bool bool Cualquier objeto al entrar (test de veracidad); True/False al salir
i8, i16, i32, int, i64, isize int Con rango comprobado; el desbordamiento lanza OverflowError
u8, u16, u32, u64, usize int Negativo o desbordamiento lanza OverflowError
f32, f64 float También acepta un int
rune int El punto de código
string str UTF-8
[]u8 bytes Bytes-like al entrar sin copiar; un bytes nuevo al salir
[]T list Cualquier secuencia al entrar; una list al salir
[N]T list Exactamente N ítems al entrar; una list al salir
?T T o None none ↔ None
map[K]T (K escalar o str) dict Claves escalares/str; un dict nuevo al salir
(A, B, …) (resultado) tuple Sólo retorno multivalor
math.complex.Complex complex
voidptr cualquiera Prestado; la referencia es tuya
vcraft.PyObj (resultado) cualquiera Propia; la referencia va al llamador
&T (T un @[vc_class]) T Referencia a instancia; acepta una subclase
un enum ese enum.IntEnum Miembro al entrar/salir; un no-miembro lanza ValueError
un struct plano dict Los nombres de campo como claves
void, !void None
!T T o lanza Ver Errores y pánicos

Elementos de composite

Un elemento de un contenedor puede ser a su vez un contenedor, un enum o un struct plano: ?[]int, [][]int, map[string][]int, []Color, []Point cruzan todos. El elemento de []u8 se trata aparte como bytes; un elemento u8 en otro sitio no tiene reader.

Campos

Un campo de @[vc_class] sigue la tabla pero se limita a escalares y referencias @[vc_ref]: un string o []T en memoria propiedad de CPython sería un puntero que el recolector de V no ve. Un campo de un struct plano puede ser cualquier tipo con regla, comprobado recursivamente.