È disponibile la versione 3.8 del sistema di programmazione PascalABC.NET, che offre una revisione del linguaggio di programmazione Pascal con supporto per la generazione di codice sulla piattaforma .NET, la possibilità di utilizzare le librerie .NET e funzionalità aggiuntive come classi generiche, interfacce, sovraccarico di operatori, espressioni λ, gestione delle eccezioni, garbage collection, metodi di estensione, classi anonime e autoclassi. Il progetto è principalmente orientato all'uso nel settore dell'istruzione e della ricerca scientifica. Il pacchetto comprende anche un ambiente di sviluppo con suggerimenti per il codice, formattazione automatica, debugger, designer di interfacce e esempi di codice per principianti. Il codice del progetto è distribuito sotto la licenza LGPLv3. È possibile la compilazione su Linux (basato su Mono) e Windows.
Novità nella nuova versione:
- È stata aggiunta la supporto per i tagli degli array multidimensionali begin var m := MatrByRow(||1,2,3,4|,|5,6,7,8|,|9,10,11,12||); Println(m[:,:]); // [[1,2,3,4],[5,6,7,8],[9,10,11,12]] Println(m[::1,::1]); // [[1,2,3,4],[5,6,7,8],[9,10,11,12]] Println(m[1:3,1:4]); // [[6,7,8],[10,11,12]] Println(m[::2,::3]); // [[1,4],[9,12]] Println(m[::-2,::-1]); // [[12,11,10,9],[4,3,2,1]] Println(m[^2::-1,^2::-1]); // [[7,6,5],[3,2,1]] Println(m[:^1,:^1]); // [[1,2,3],[5,6,7]] Println(m[1,:]); // [5,6,7,8] Println(m[^1,:]); // [9,10,11,12] Println(m[:,^1]); // [4,8,12] end.
- Sono state aggiunte le espressioni lambda con decompressione dei parametri, che possono essere tuple o sequenze. Ora è possibile dare nomi agli elementi delle tuple direttamente nei parametri della lambda. Per decomprimere un parametro-tuple t nelle variabili x e y, si utilizza la sintassi \\(x,y). Questo è un singolo parametro, a differenza della sintassi (x,y), che rappresenta due parametri: begin var s := Seq((‘Umnova’,16),(‘Ivanov’,23), (‘Popova’,17),(‘Kozlov’,24)); Println(‘Maggiorenni:’); s.Where(\\(name,age) -> age >= 18).Println; Println(‘Ordinamento per cognome:’); s.OrderBy(\\(name,age) -> name).Println; end.
- È stata autorizzata la costruzione «a as array of T», precedentemente vietata a livello di grammatica. begin var ob: object := new integer[2,3]; var a := ob as array [,] of integer; end.
Fonte: opennet.ru
