Commons
🌍 Idioma: English | Español
Utilidades transversales para aplicaciones DAFce — punteros inteligentes, tokens de cancelación, futuros asíncronos, helpers de RTTI, abstracciones enumerables, arrays y más. Es el suelo que pisan todos los demás paquetes de DAF.
Módulos de un vistazo
| Unidad | Aspectos destacados |
|---|---|
Daf.MemUtils |
ARC<T> smart pointer (reference to function: T), TFinalizer, TPurgatory |
Daf.Threading |
ICancellationToken, ICancellationTokenSource (fábrica: CreateCancellationTokenSource), TShutdownHook |
Daf.Enumerable |
Adaptador ToIEnumerable<T>, IInterfaceList<T>, TInterfaceList<T>, TDeferredEnumerable<T> / TGeneratorEnumerator<T> (la secuencia diferida) |
Daf.Nullable |
TNullable<T> — un valor ausente distinguido de un valor por defecto presente |
Daf.Comparers |
TValueComparers, TNullableComparers — orden e igualdad conscientes de NULL |
Daf.Application.Version |
TVersionInfo, VersionAttribute — la versión SemVer de la aplicación, y la plataforma para la que se compiló |
Daf.Rtti |
Helpers de RTTI — _T.Extends, predicados de tipo |
Daf.Activator |
Crear instancias de clases mediante RTTI |
Daf.Arrays |
TArrayHelper (Map, Trim), TSmartArray<T> (estilo LINQ: Where, Select, Contains, Sort, …) |
Daf.FilterSpec |
TFilterSpec<T> — predicado por clausuras, componible con and / or / not |
Daf.Types |
TDeferred<T> (se relee en cada acceso), TMacrosList (sustitución de ${nombre}), TEnvVars, Coalesce, Debugger |
Ejemplos rápidos
Puntero inteligente ARC
uses Daf.MemUtils;
var Ref := ARC.From<TMyObject>(TMyObject.Create);
Ref().DoWork;
// liberado automáticamente cuando Ref sale del scopeToken de cancelación
uses Daf.Threading;
var Cts := CreateCancellationTokenSource;
var Token := Cts.Token;
TThread.CreateAnonymousThread(procedure
begin
while not Token.IsCancellationRequested do
DoWork;
end).Start;
Sleep(5000);
Cts.Cancel;Qué se gana el sitio en Commons
Lo decide una pregunta: ¿esto extiende la biblioteca estándar, o es una utilidad de aplicación?
Daf.MemUtils, Daf.Types, Daf.Threading, Daf.Enumerable, Daf.Rtti, Daf.Arrays, Daf.Comparers y Daf.Nullable son cosas que Delphi debería traer y no trae. Todos los demás paquetes pisan éste, así que lo que una aplicación usa —en vez de lo que al lenguaje le falta— va en otro sitio; si no, quien quiere un puntero inteligente acaba enlazando un lanzador de procesos.
Dos units salieron por esa regla. Daf.SystemProcess conserva los nombres de su unit y de sus tipos, así que basta añadir una referencia al paquete nuevo para que las cláusulas uses existentes sigan compilando. Daf.CmdLn.Parser salió también, y desde entonces se ha retirado: la línea de comandos es Daf.CommandLine, el porting de System.CommandLine de .NET.
| Se mudó a | Qué hace |
|---|---|
Daf.SystemProcess |
TSystemProcess — runner de procesos externos asíncrono |
Documentación
- 📖 Guía de uso — referencia de API completa para todas las unidades