Descargar

10. Módulos

Cada archivo .hz es un módulo. Todo lo que se declara en él (funciones, clases, variables, enums...) se puede usar desde otros archivos, salvo lo marcado como private.

// enemigos.hz
class Orco { var vida = 30 }
const VELOCIDAD = 2
private var contador = 0          // solo se ve dentro de enemigos.hz

// main.hz
from "./enemigos.hz" import Orco, VELOCIDAD   // trae nombres concretos
import "./enemigos.hz" as enemigos            // trae el módulo entero con un nombre

var o = Orco()
var o2 = enemigos.Orco()
print(VELOCIDAD, enemigos.VELOCIDAD)
  • Las rutas entre comillas son relativas al archivo que importa.
  • Un módulo se ejecuta una sola vez, la primera vez que se importa.
  • Los nombres importados conservan sus tipos: el editor autocompleta y avisa de errores igual que en el propio archivo.

Importar por nombre

Sin comillas, import nombre busca, por este orden:

  1. nombre.hez (o .hz) junto al archivo que importa;
  2. en la raíz del proyecto (la carpeta con hypersettings/): hypercode/nombre.hez y hyperlibs/nombre/main.hez;
  3. en la carpeta del proyecto: src/nombre.hez, nombre.hez y hz_packages/nombre/;
  4. las bibliotecas incluidas con HyperEZ.

Así, las pruebas de hypertests/ importan los módulos de hypercode/ igual que main.hez. Más en Proyectos y carpetas.

Un punto separa carpetas: import juego.enemigos busca juego/enemigos.hz.

Bibliotecas incluidas

Vienen dentro de hyper (no hay que instalar nada) y están escritas en HyperEZ:

BibliotecaPara qué sirve
airedes neuronales, regresión lineal, k vecinos, k-medias, normalización
statsmedia, mediana, desviación típica, percentiles, correlación, histogramas
csvleer y escribir tablas CSV
cliargumentos de línea de órdenes, preguntas, barras de progreso, tablas
x86ensamblador x86 de 16 bits para crear sectores de arranque
webaplicaciones web con rutas (/jugadores/:id) sobre Http.serve
htmlgenerar HTML con escape automático
dbbase de datos de documentos guardada en JSON
audiosonidos y música en archivos WAV
import stats
print(stats.median([3, 1, 4, 1, 5]), stats.stdev([2, 4, 4, 4, 5, 5, 7, 9]))

from stats import mean, percentile
print(mean([1, 2, 3]), percentile([1, 2, 3, 4, 5], 90))
▶ Probar en el editor

Los módulos nativos (File, Http, Matrix, Console...) están siempre disponibles sin importar nada. La lista completa está en la biblioteca estándar.