Вышла версия PascalABC.NET 3.1.
Что нового:
Язык программирования
- Добавлен стандартный тип Complex и функция Cplx(re,im)
begin
var c := Cplx(2,3);
var c1 := c * Cplx(0,-1);
c := c1 / c + c1;
Println(c.Magnitude, c.Phase);
end.
- Реализованы кортежи в виде (a,b,c+1)
- Реализована операция индексации для кортежей
- Реализованы типы кортежей в виде var t :(integer,string);
- Реализовано кортежное присваивание (a,b,c) := (c,a,b)
begin
var t: (string,integer);
t := ('Иванов',16);
Println(t[1],t[0]);
var name: string;
var age: integer;
(name,age) := t;
var a := 3;
var b := 5;
(a,b) := (b,a); // Swap(a,b)
Println(a,b);
a := 1;
b := 1;
for var i:=3 to 20 do
begin
(a,b) := (b,a+b);
Print(b); // Фибоначчи
end;
end.
- Реализованы множественные секции uses
- Реализован новый синтаксис extension-методов (новое ключевое слово extensionmethod). Параметр расширяемого типа должен иметь имя Self
/// Применяет действие к каждому элементу последовательности
procedure &ForEach<T>(self: sequence of T; action: T -> ()); extensionmethod;
begin
foreach x: T in Self do
action(x);
end;
- Реализован foreach по многомерным массивам
Стандартные модули
- Реализованы операции ToHashSet и ToSortedSet для последовательностей
- Стандартные Chr и Ord теперь работают с кодировкой Unicode. Для кодировки Windows реализованы ChrAnsi и OrdAnsi
- В стандартные методы Reset, Rewrite, Append, OpenRead, OpenWrite, OpenAppend добавлен параметр - кодировка. Кодировка по умолчанию - 1251
begin
var f : Text;
Rewrite(f,'a.txt',Encoding.UTF8);
f.Writeln('PascalABC.NET 3.1');
f.Close
end.
- Реализована операция in для динамических массивов, множеств HashSet и SortedSet, словарей и списков
begin
var s := HSet(1,3,5);
Println(5 in s);
var a := Arr(1,3,5);
Println(5 in a);
var d := Dict(KV('бегемот',2),KV('крокодил',3));
if 'крокодил' in d then
d['крокодил'] -= 1;
Println(d);
end.
- Реализованы операции + * - < > <= >= = <> для HashSet
- Реализованы операции += для множеств и списков
begin
var a := HSet(1,3,5);
a += 5;
Print(a);
var l := Lst(1,3,5);
l += 5;
Print(l);
end.
- Введены новые стандартные короткие функции HSet, SSet, Lst
- Добавлен новый стандартный учебный модуль ClientServer
- Добавлены стандартные функции RoundBigInteger, TruncBigInteger, метод расширения string.ToBigInteger
- Добавлены методы расширения char.ToDigit, char.Pred, char.Succ, char.IsDigit, char.IsLetter, char.Code, char.IsLower, char.IsUpper, char.ToLower, char.ToUpper
- Изменен порядок параметров в стандартных функциях SeqGen, SeqFill, ArrGen и ArrFill.
Среда IDE
- Уменьшено потребление памяти в Intellisense.
- Реализована отладка в .inc-файлах (первый внешний pull-request от Slav76).
Другое
- Сборка проекта и выполнение тестов в Linux.