Выпуск среды разработки PascalABC.NET 3.8


Доступен выпуск системы программирования PascalABC.NET 3.8, предлагающей редакцию языка программирования Паскаль с поддержкой генерации кода для платформы .NET, возможностью использования библиотек .NET и дополнительными возможностями, такими как обобщённые классы, интерфейсы, перегрузка операций, λ-выражения, исключения, сборка мусора, методы расширения, безымянные классы и автоклассы. Проект главным образом ориентирован на применение в сфере образования и научных исследований. Пакет также включает среду разработки с подсказками по коду, автоформатированием, отладчиком, дизайнером форм и образцами кода для начинающих. Код проекта распространяется под лицензией LGPLv3. Возможна сборка в Linux (на базе Mono) и Windows.

Изменения в новом выпуске:

  • Добавлена поддержка срезов многомерных массивов

    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.

  • Добавлены лямбда-выражения с распаковкой параметров, являющихся кортежами или последовательностями. Появилась возможность давать имена элементам кортежей прямо в параметрах лямбды. Чтобы распаковать параметр-кортеж t в переменные x и y, используется запись \\(x,y). Это один параметр в отличие от записи (x,y), представляющей два параметра:

    begin
    var s := Seq(('Умнова',16),('Иванов',23),
    ('Попова',17),('Козлов',24));
    Println('Совершеннолетние:');
    s.Where(\\(name,age) -> age >= 18).Println;
    Println('Сортировка по фамилии:');
    s.OrderBy(\\(name,age) -> name).Println;
    end.

  • Разрешена конструкция "a as array of T", которая ранее была запрещена на уровне грамматики.

    Источник: https://www.opennet.ru/opennews/art.shtml?num=54787


Comments 0