Skip to content

Tipos de Datos

WN++ es de tipado dinámico: una variable puede guardar cualquier tipo de valor, y ese tipo puede cambiar. No declaras el tipo, WN++ lo infiere. Cuando algo no cuadra, te lo dice en ejecución.


Todos los números en WN++ son punto flotante de 64 bits. No hay distinción entre entero y decimal.

wea goles_alexis = 47 // entero
wea promedio_gol = 0.72 // decimal
wea deuda_fifa = 1.5e6 // notación científica → 1500000
lorea(cachar(goles_alexis)) // → numero

Las operaciones aritméticas estándar:

wea partidos = 180
wea victorias = 98
wea porcentaje = victorias / partidos * 100
lorea(porcentaje) // → 54.44444444444444
wea minutos = 94
wea descuento = minutos % 90 // módulo
lorea(descuento) // → 4

Cadenas de caracteres entre comillas dobles o simples. Se concatenan con +.

wea jugador = "Arturo Vidal"
wea apodo = 'El Rey'
wea completo = jugador + " — " + apodo
lorea(completo) // → Arturo Vidal — El Rey

Texto con números se convierte automáticamente al concatenar:

wea nombre = "Gary Medel"
wea tarjetas = 15
lorea(nombre + " tiene " + tarjetas + " tarjetas amarillas")
// → Gary Medel tiene 15 tarjetas amarillas

Secuencias de escape:

lorea("Primera línea\nSegunda línea")
lorea("Campeón:\t\"La Roja\"")

Solo dos valores posibles: verdad y falso.

wea es_titular = verdad
wea esta_lesionado = falso
wea puede_jugar = es_titular y no esta_lesionado
lorea(puede_jugar) // → verdad

Las comparaciones devuelven booleanos:

wea goles_chile = 3
wea goles_bolivia = 0
lorea(goles_chile > goles_bolivia) // → verdad
lorea(goles_chile == goles_bolivia) // → falso
lorea(goles_chile != goles_bolivia) // → verdad

Valores tratados como falso — se evalúan como falso en un cachai:

Valor¿Falso?
falso
nada
0
""
Todo lo demás
cachai (0) {
lorea("nunca llega acá")
}
cachai ("") {
lorea("tampoco acá")
}
cachai ("Colo-Colo") {
lorea("esto sí se ejecuta") // → esto sí se ejecuta
}

Representa la ausencia de valor. Es lo que devuelve una función que no retorna nada explícitamente.

wea transferencia = nada // aún no se concreta
cachai (transferencia == nada) {
lorea("Alexis sigue sin club, esperando ofertas")
}

Colección ordenada de valores. Se define con []. Puede mezclar tipos.

wea plantel = ["Bravo", "Medel", "Maripán", "Isla", "Alexis", "Vidal"]
wea numeros = [1, 2, 3, 4, 5]
wea mixta = [1, "dos", verdad, nada] // válido

Acceso por índice — base cero:

lorea(plantel[0]) // → Bravo
lorea(plantel[2]) // → Maripán
lorea(plantel[-1]) // → Vidal (índice negativo: desde el final)

Modificar un elemento:

plantel[4] = "Brereton"
lorea(plantel[4]) // → Brereton

Largo:

lorea(largo(plantel)) // → 6

Iterar:

para (jugador en plantel) {
lorea(" " + jugador)
}

Listas anidadas:

wea fixture = [
["Chile", "Bolivia"],
["Argentina", "Perú"],
["Uruguay", "Colombia"]
]
lorea(fixture[0]) // → [Chile, Bolivia]
lorea(fixture[0][1]) // → Bolivia

Colección de pares clave-valor. Se define con {}. Las claves son texto.

wea jugador = {
"nombre": "Charles Aránguiz",
"posicion": "mediocampista",
"clubes": ["La U", "São Paulo", "Bayer Leverkusen", "La U"],
"copas": 2
}

Acceso por clave:

lorea(jugador["nombre"]) // → Charles Aránguiz
lorea(jugador["copas"]) // → 2
lorea(jugador["clubes"][0]) // → La U

Modificar un valor:

jugador["copas"] = 3

Clave inexistente:

lorea(jugador["sueldo"])
// Error: La clave 'sueldo' no existe papito.

Mapas anidados:

wea seleccion = {
"pais": "Chile",
"apodo": "La Roja",
"tecnico": {
"nombre": "Ricardo Gareca",
"pais": "Argentina"
}
}
lorea(seleccion["tecnico"]["nombre"]) // → Ricardo Gareca

La función nativa cachar() devuelve el tipo de cualquier valor como texto:

lorea(cachar(42)) // → numero
lorea(cachar("La Roja")) // → texto
lorea(cachar(verdad)) // → booleano
lorea(cachar(nada)) // → nada
lorea(cachar([1, 2, 3])) // → lista
lorea(cachar({"a": 1})) // → mapa
lorea(cachar(pega x() {})) // → pega

Útil para hacer lógica condicional según el tipo:

pega describir(valor) {
wea tipo = cachar(valor)
cachai (tipo == "numero") {
"el número " + valor
} si no {
cachai (tipo == "texto") {
"el texto \"" + valor + "\""
} si no {
cachai (tipo == "lista") {
"una lista de " + largo(valor) + " elementos"
} si no {
"un " + tipo
}
}
}
}
lorea(describir(9)) // → el número 9
lorea(describir("Estadio Monumental")) // → el texto "Estadio Monumental"
lorea(describir([1, 2, 3])) // → una lista de 3 elementos
lorea(describir(nada)) // → un nada

numero

42, 3.14, -7, 1.5e6

Enteros y decimales son el mismo tipo. Aritmética estándar con +, -, *, /, %.

texto

"wena", 'wn'

Concatenación con +. Conversión automática al concatenar con números.

booleano

verdad, falso

Operadores: y, o, no. Comparaciones devuelven booleano.

nada

nada

Ausencia de valor. Se evalúa como falso en condiciones.

lista

[1, "dos", verdad]

Ordenada, indexada desde 0. Índices negativos desde el final.

mapa

{"clave": valor}

Pares clave-valor. Claves siempre texto. Anidable.