Версия PascalABC.NET 3.3

Выпущена версия PascalABC.NET 3.3

Основные изменения:

Новый модуль 3D-графики Graph3D
Новый модуль растровой графики GraphWPF
Кардинально улучшен Intellisense в лямбда-выражениях

Основные изменения после выхода версии 3.2:

Обновление версии PascalABC.NET из оболочки
Операция безопасного среза: a?[-1:5:2]
Реализованы виртуальные свойства
Делегатам можно присваивать лямбда-выражения
Реализовано кортежное присваивание var (a,b) := (1,2)
Добавлен цикл loop
Ускорение компиляции за счет поиска стандартных dll только в GAC
operator* и operator+ для процедур
Ряд новых методов расширения для двумерных массивов
Полная поддержка Nullable<T>
2 лайка

operator* и operator+ для процедур - а можно содержательный пример ?

2 лайка

Да да, хотелось бы подробные описания для пунктов найти/получить…

Ну, например, вот решение одной задачи для школьников:

var Зигзаг := Right*13 + Down + Left*13 + Down;
Run(Зигзаг*4);

Немного посмотрел Graph3D. Спасибо. А как там произвольную сетку (mesh) создать или из файла загрузить? Чашку например к тому чайнику, который в примерах. Вроде бы сейчас за основу взят helix-toolkit. По нему не особо много документации, но загрузчики с нескольких стандартных форматов там есть. Только не знаю, как этим воспользоваться из PascalABC.NET

Ну, документацию попозже напишем. Не всё есть

2 лайка

Будет ли когда то лямбда подсказывать тип и методы переменных которые она использует? Если да то может добавите на гитхаб?

Уже позволяет. Единственная проблема - правильная лямбда должна быть вначале полностью написана.

Полагаю это вписывается к названию этой темы. Кхм кхм… Есть какие то причины, какая то сложная проблема, которая стала поперёк горла, кроме отматывания этой issue на вторую страницу :smiley:?

Будет когда либо добавлено авто выведение типа для параметров подпрограмм? procedure p1(b := true);

Думаю, это не самое необходимое нововведение. Параметры по умолчанию используются редко и в конце. И присваивание без типа в параметрах - от этого вздрагиваешь.

Конструкторам не даёт делать короткую запись подпрограмм, мне понадобилось сделать 1 основной и несколько упрощённых(меньше параметров), упрощенные вызывают основной давая параметры по умолчанию. Приходится добавлять лишние begin end; на строчке каждого конструктора.

По ходу работы возник вопрос: работают ли директивы OpenMP в модулях, или только в программах?

Да, нам тоже это мешает. Напишите в Issue с Label “enhancement”. В конструкторах сделать это сложнее чем в методах к сожалению - надо морочиться.

Директивы работают везде, кроме тех, которые задают информацию о .exe (типа производитель, компания, копирайт и т.д.)

issue сделал, а вот лейблы могут ставить только редакторы.

@Admin почему typeof и sizeof закомментированы?

            //keywords.Add("typeof", "typeof"); keys.Add("typeof");
            //keywords.Add("sizeof", "sizeof"); keys.Add("sizeof");

Не знаю. А Вам это мешает?

Ну их из за этого нету в Ctrl+Space, я не давно сделал список всего что там не хватает а с этими не понял что не так. Они же ключевые слова…

Вот в этой фиксации @ibond закомментировал их…