Замечания и предложения

В настройках компилятора, по непонятным для меня причинам, постоянно ставится галочка на “генерировать отладочную информацию”, хотя я её уже замучался там отключать.

Можно, пожалуйста, горячую клавишу для закомментирования нескольких строчек? К примеру, по аналогии с отступами (TAB и Shift+TAB) - / и Shift+/. И так же как с отступами - чтоб работало только если выделить несколько строчек.

Вот, кстати, да. Очень удобно. Только ещё и такую ГК для раскомментирования нескольких строчек.

ГК? Не знаю что это значит, но я упомянул сочетание клавишь для раскомментирования - Shift+/, по аналогии с Shift+TAB.

Это я так неудачно сократил “горячая клавиша”…

1 лайк

Так это, Ctrl+/ работает же, только он блок из строк комментирует как каждую отдельную строку //. А вы наверное про блочное комментирование (**)?

А, действительно комментирует, не знал.
Нет я именно про //.
Но как раскомментировать после этого?

Та же комбинация Ctrl+/

1 лайк

Вот же ж… Как это мимо меня прошло? Век живи…

operator+= работает для процедур которые =nil:

begin
  var p:procedure := nil;
  p += ()->begin writeln('test') end;
  p();//выводит "test"
end.

Но не для списков:

begin
  var l1 := new List<byte>;
  l1 += byte(1);
  writeln(l1);//Выводит "[1]"
  
  var l2: List<byte> := nil;
  l2 += byte(2);//ошибка
  writeln(l2);
end.

Это можно по простому исправить, заменив в PABCSystem

function operator+=<T>(a: List<T>; x: T): List<T>; extensionmethod;
begin
  a.Add(x);
  Result := a;
end;

на

function operator+=<T>(var a: List<T>; x: T): List<T>; extensionmethod;
begin
  if a = nil then a := new List<T>;
  a.Add(x);
  Result := a;
end;

Я проверил, работает.

Как насчёт сделать это?

Нет, это неправильно. Процедурные типы - это обёртки для Multicast-делегатов, и они когда описываются - считайте, что они уже сконструированы, и внутри уже инициализирован список с одним nil.

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

Вы в своём коде вправе конечно желать что хотите

А как Вы смотрите на то, что добавить расширенную форму записи для event c add и remove (как в C#)?

1 лайк

Майн Готт… попытки сделать из Паскаля C# по прежнему оставляют нескольких беспокойных… э … участников форума.

Все и так к этому идёт. :wink:

Предложение добавить в паскаль функционал из языков, который не по глупости а из за какой либо необходимости добавили в те языки, особенно если те языки тоже построены на .Net - нельзя считать заведомо плохим, до рассмотрения конкретного случая.

Что касается конкретного случая - на станице msdn по ссылке выше представлен прекрасный пример где такое может быть необходимо, и нормальной замены ему нету. И со стороны реализации - это те же свойства, функционал тот же.

А с этим я не согласен. PascalABC.Net это смесь старого паскаля и C#, с лучшим из обоих языков. Как бы не пошла разработка, он всё ещё останется на половину старым паскалем, то есть никогда не станет копией C# с особым синтаксисом.

Но и это не повод отвергать фичи из C# только потому что они в C#, это уже своеобразный расизм.

1 лайк

Я уже сколько раз писал причину: это не расизм, а уже просто какое-то открытое негодование по поводу того, что старые вещи ждут доработок, а вы все новые идеи, наверно 3-4 человекам из нескольких тысяч нужные, продолжаете генерировать.

Это совершенно не обоснованно, вы смотрите лишь по себе. И соотношение на форуме, сейчас - точно не доказывает вашу правоту)).

Кроме того, “генерировать” тут точно не подходит. Надежды на то что удобства IDE будут улучшать были оставлены, раз разработчики сказали что дорабатывать её не будут, и нормально обосновали.

А фичами из других языков, особенно тех что .Net - нужно индивидуальный осмотр от разработчика. Их не так часто находят, чтоб тратить значимое время на осмотр.

И даже если разработчики решили что фича нужна и не слишком сложная - это ещё не значит что из за неё не будут исправляться баги. К примеру, #843 пока не занимались, значит исправление багов было важнее, и в итоге, на фичу не было потрачено времени.

1 лайк

Соотношение такое, что вас тут как раз 3-4 человека, пытающихся протащить то одну, то другую примбамбаску из C++ или C#. Если бы тут присутствовали все пользователи PascalABC.NET - школьники, студенты, учителя - они бы рассказали про белые тапочки, в которых они видали эти прибамбасики.

Это спекуляция.

Нет, спекуляция - это пытаться навести статистику так, как это Вы делаете. Вот когда у ларька пивного толчется перед открытием контингент, так там 100% тех, кто пива хочет, но нельзя на этом основании считать, что ВСЯ РОССИЯ ХОЧЕТ ПИВА! Сейчас на форуме вас несколько толчется, кому охота что-то просовывать, которое простым смертным и в страшном сне не приснится.И что?