Die Version 3.8 des Programmierumgebung PascalABC.NET ist jetzt verfĂŒgbar. Diese bietet eine ĂŒberarbeitete Programmiersprache Pascal mit UnterstĂŒtzung zur Codegenerierung fĂŒr die .NET-Plattform, die Nutzung von .NET-Bibliotheken und zusĂ€tzliche Funktionen wie generische Klassen, Schnittstellen, OperatorĂŒberladung, λ-AusdrĂŒcke, Ausnahmen, Garbage Collection, Erweiterungsmethoden, anonyme Klassen und Autoklassen. Das Projekt ist hauptsĂ€chlich auf den Einsatz im Bildungs- und Forschungsbereich ausgerichtet. Das Paket enthĂ€lt zudem eine Entwicklungsumgebung mit CodevervollstĂ€ndigung, automatischer Formatierung, Debugger, Formulardesigner und Beispielcode fĂŒr Einsteiger. Der Code des Projekts wird unter der LGPLv3-Lizenz verbreitet. Eine Compilation auf Linux (auf Basis von Mono) und Windows ist möglich.
Ănderungen in der neuen Version:
- UnterstĂŒtzung fĂŒr die Slice-Nutzung multidimensionaler Arrays hinzugefĂŒgt. 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.
- Lambda-AusdrĂŒcke mit Entpackung von Tupel- oder Sequenzparametern hinzugefĂŒgt. Es besteht die Möglichkeit, Tupel-Elementen direkt in den Lambda-Parametern Namen zu geben. Um den Tupel-Parameter t in die Variablen x und y zu entpacken, wird die Schreibweise \\(x,y) verwendet. Dies ist ein Parameter im Gegensatz zu der Schreibweise (x,y), die zwei Parameter darstellt: begin var s := Seq((âUmnovaâ,16),(âIvanovâ,23), ('Popova',17),(âKozlovâ,24)); Println(âVolljĂ€hrige:â); s.Where(\\(name,age) -> age >= 18).Println; Println(âSortierung nach Nachnamen:â); s.OrderBy(\\(name,age) -> name).Println; end.
- Die Konstruktion âa as array of Tâ, die zuvor auf grammatikalischer Ebene verboten war, ist nun erlaubt. begin var ob: object := new integer[2,3]; var a := ob as array [,] of integer; end.
Quelle: opennet.ru
