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

Да, вот это имеется ввиду. И здесь имеются ввиду именно неявные преобразования.

Я этого не вижу. Возможно, мы по-разному понимаем этот текст. Ладно, не будем спорить.

Ну, вообщем, спасибо за предложение - не будем делать :slight_smile:

Явность/неявность тут не при чем. Имелось в виду, что делать (явное или неявное) преобразование int->bool вида boolean(int), подразумевающее isOdd, но не говорящее об этом - глупо. Convert.ToBoolean - хороший пример. В его названии ничего не говорится о специальной семантике, а значит, она должна удовлетворять общепринятым нормам. Предлагаемый автором boolean(5) - неимоверная несостыковка с современными ЯП.

Какой срачик развели, ну а мне самому неважно каким способом будет, по последнему биту или всему числу сравнивать, неудобно было работать с шифровкой побитово, ну раз админ сказал нет значит нет(

Можно добавить пространства имён вида Type <Имя>=namespace Type a=Class End; Type b=(b1, b2, b3); End; или Namespace <Имя> Type a=Class End; Type b=(b1, b2, b3); End; Это ведь является полезной возможностью платформы .NET, особенно при написании библиотек (dll). Почему бы не реализовать её в Паскале?

Было уже про это, админы не хотят реализовывать пространства имён, ибо сложно. Но мысль была не плохая как сделать это просто - называть классы через точку, то есть к примеру:

type
  testnamespace.t1 = class
  
  end;
  
  testnamespace.t2 = record
  
  end;

Тогда ничего не сделали, и так называть типы всё ещё нельзя

Дело в том, что пространства имен должны быть “сквозными”, то есть охватывать множество файлов, иначе толку в них никакого нет. Можно ввести отдельный синтаксис для файла-пространства имен:

namespace <namespace>;
<синтаксис упрощенных модулей, без interface и implementation и секции begin end.>
end.

Подключение файлов:

{$includenamespace 'models/*.pas'}
{$includenamespace 'services/*.pas'}

подключать можно только в основной программе и dll.

Можно ли чуть подробнее? Как я понял, Модули: Unit U1; Type a=Class End; Type b=Class End; End;

Unit U2; Type a=Class End; Type b=Class End; End;

Объединение при компиляции dll (там ведь может быть несколько пространств имён): Library Lib; {$includenamespace ‘U1.pas)’} // либо .pcu {$includenamespace ‘U2.pas)’} // либо .pcu End.

Если так, то это действительно хорошее решение! Или всё же так: Library Lib; Namespace n1; {Unit1} Type a=Class End; Type b=Class End; End; End.

Я имел в виду такое:

Customer.pas namespace Models; type Customer = class end; end.

Order.pas namespace Models; type Order = class c: Customer; end; end.

library MyLib; {$includenamespace ‘Customer.pas’} {$includenamespace ‘Order.pas’}

begin end.

То есть можно разделить на файлы с одним пространством имен, а не пихать сотню классов в один модуль.

Хорошо. Тогда в MyLib будет следующее?: Пространство имён MyLib.Customer Класс MyLib.Customer.Customer Пространство имён MyLib.Order Класс MyLib.Order.Order

Как насчёт сделать выделение сразу большого количества строчек для отладки? Перетыкать 50 строчек, исправить маленькую ошибку, убрать выделение чтоб понять что ошибка была не 1 - не очень приятно… Предлагаю сделать такое выделение: на какой то строчке, слева, зажимаешь ЛКМ, тянешь мышку и на всём расстоянии строчки выделяются для отладки или наоборот, в зависимости от строчки с которой начал выделять.

Так же можно сделать закрытие вкладки как в браузерах, щелчком колёсика и немного изменить вид выделения для отладки на такой: Разумеется вы программно сделаете это не таким корявым как я в пеинте, но идея должна быть понятна…

Ну, что написано после namespace то и будет пространством имен.

Как насчёт сделать ещё 1 case, в виде функции, а не только процедуры?

var b := case a of
  0..1:100;
  2..5:200;
  6..9:500;
  else 1000
end;

вместо

var b:integer;
case a of
  0..1:b := 100;
  2..5:b := 200;
  6..9:b := 500;
  else b := 1000
end;
type
  t1 = class
    
    procedure p1; abstract;
  
  end;
  
  t2 = class(t1)
  
  end;

begin
end.

Сделайте пожалуйста такое предупреждение:

Класс t2 нигде явно не определён абстрактным, но является таковым по наследству из за процедуры t1.p1

Искать какой метод забыл реализовать бывает неудобно в больших программах.

Это будет очень удобно! Будет ли это реализовано в следующей версии?

Это называется pattern matching. Надеемся через год реализовать.

Ммм а разве есть сильно большое отличие от текущего case? Почему аж через год? Много остального что надо сделать или вы хотите какой то сложный алгоритм реализовать который будет оптимизированнее делать?

Скорее второе. Pattern matching - это сложно. То, что предлагаете Вы - это как-то криво.

Сделайте, пожалуйста, чтобы при перенаправлении ввода readln на EOF не зависал навечно, а успешно завершался. Подробности в заявке https://github.com/pascalabcnet/pascalabcnet/issues/369#issuecomment-329774407.