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


#285

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


#286

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


#287

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


#288

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


#289

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


#290

Можно добавить пространства имён вида 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). Почему бы не реализовать её в Паскале?


#291

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

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

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


#292

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

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

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

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

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


#293

Можно ли чуть подробнее? Как я понял, Модули: 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.


#294

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

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.

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


#295

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


#296

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

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


#297

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


#298

Как насчёт сделать ещё 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;

#299
type
  t1 = class
    
    procedure p1; abstract;
  
  end;
  
  t2 = class(t1)
  
  end;

begin
end.

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

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

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


#300

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


#301

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


#302

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


#303

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


#304

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