Tipos de datos

DinoCode es de tipado dinámico. No necesitas declarar el tipo, el valor lo define.

¿Todo es un objeto?#

No. Se soportan tipos primitivos que no requieren gestión de memoria:

TipoDescripciónCosto de MemoriaDocumentación
IntegerNúmeros enteros.Insignificante (Es primitivo)Números
FloatNúmeros decimales.Insignificante (Es primitivo)Números
BooleanVerdadero y falso.Insignificante (Es primitivo)Constantes
NoneAusencia de valor.Insignificante (Es primitivo)Constantes
StringCadenas de texto.Variable (Requiere GC)Cadenas
ArrayColección ordenada de valores.Variable (Requiere GC)Arrays
BigIntNúmeros enteros grandes.Variable (Requiere GC)Números
ObjectEstructura clave-valor.Variable (Requiere GC)Objetos
Gestión de Memoria y GC

DinoCode utiliza un Garbage Collector (GC) con el algoritmo Mark and Sweep (marcado y barrido) para gestionar la memoria dinámica (Strings, Arrays, BigInts, y Objects).

Constantes#

DinoCode proporciona constantes predefinidas para valores comunes:

ConstanteTipoDescripciónEjemplo
trueBooleanValor verdaderoactivo = true
falseBooleanValor falsoactivo = false
noneNoneAusencia de valorresultado = none
nanFloatNo es un númerovalor = nan
infiFloatInfinito positivovalor = infi
-infiFloatInfinito negativovalor = -infi
print true
print false
print none
print nan
print infi
print -infi

Valores especiales numéricos#

DinoCode permite operaciones matemáticas que resultan en NaN e Infinity. Aunque con distinciones que lo separan de otros lenguajes.

a = 0 / 0          # NaN
b = 1 / 0          # Infinity
c = -1 / 0         # -Infinity

if a == nan
    print "Es no-numérico. Operación inválida"

if b == infi
    print "Es infinito positivo"

if c == -infi
    print "Es infinito negativo"
Comparación con otros lenguajes
  • En JavaScript NaN == NaN es false. En DinoCode es true, lo que hace más fácil validarlo.
  • En JavaScript NaN puede propagarse sin restricciones. En DinoCode, se maneja de manera más estricta.

Por ejemplo:

a = 0 / 0     # NaN
if a  # RuntimeError: No se puede usar NaN en una condición
  print a

print a as float    # RuntimeError: No se puede convertir NaN a valores finitos

lista = [1 2 3]
print lista[a]  # RuntimeError: No se puede usar NaN como índice

for i in 1..a # RuntimeError: No se puede usar NaN como límite
  print i

Verificación de tipos y conversión#

Aprende más
  • Consulta Type para verificar el tipo de un valor.
  • Consulta Funciones globales para usar int(), float(), str() o el operador as.