Bon … dopo l’articolo di ieri, ho pensato molto alla soluzione da adottare ed alla fine ho optato per separare le funzionalità in una libreria standard esterna (sempre compilata e distribuita insieme all’interprete) così da lasciare il core pulito e veloce.
Attualmente, bisogna dichiarare esplicitamente quali moduli importare dal namespace standard (chiamato appunto std), tuttavia son venuto incontro alle necessità dei più pigri (me compreso) che, non essendo interessati alla velocità di esecuzione, preferirebbero precaricare tutto il possibile per non dover dichiarare manualmente i moduli necessari.
Ho implementato l’operatore ‘*’ per gli import, ispirato al java, tramite il quale è possibile importare ricorsivamente interi namespace e loro derivati in una sola riga … ad esempio, se volessimo importare tutte le funzionalità di I/O (su file, console, stream xml, tcp/ip e http), basta un :
import std.io.*;
All’inizio dello script, oppure, se proprio vogliamo importare TUTTO, si può scrivere più semplicemente :
import std.*;
Questo operatore è valido SOLO se viene specificato il namespace principale (in questo caso std), ovvero una dicitura del genere :
import *;
Genererà l’errore :
Could not use ‘*’ as main namespace.
Questo perchè ho voluto pensare al futuro … ipotiziamo che un domani Hybris abbia 500 moduli implementati da utenti vari (magari! ^^), importare tutto con * significherebbe tempi di calcolo troppo eccessivi e troppe risorse richieste, invece indicando il namespace padre, rimane la comodità ma è più selettiva.
More…
Popularity: 6% [?]