Модули vs namespace's [closed]


#77

Это не неймспейсы


#78

А что это? Задача стояла - дать возможность делать в библиотеках такую же иерархию, как и в C#. Задачу выполнили. Тот, кто о них не знает, не испытывает вообще никаких трудностей. Кому они помешали? А не испортило ли язык удаление статических классов?


#79

Насколько давно это было?


#80

Уже наверное пол года. Причём узнали об этом уже по факту, когда ошибку компиляции получили. Оказалось, что разработчики поняли, что Sealed Abstract - бредовая запись и запретили её, а об альтернативе никто не позаботился. Как итог - остались ни с чем.


#81

static бы пригодился. Представляется мне как наиболее логичная запись. Хотя, наверное, это уже обсуждалось.


#82

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


#83

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


#84

Не должно, но имеет, к сожалению. Выслушаем @ibond, он уже здесь.


#85

Можно. Явные пространства имен можно разносить по файлам, ради чего это и затевалось, чтобы хоть как-то смягчить ограничения паскалевской модели с тысячью классов в одном файле…


#86

Для библиотек это особенно актуально. Сейчас надо писать все в одном файле с library, чтобы они попали в dll…


#87

Можете привести пример кода, который бы объединял два класса (в двух различных файлах) одного пространства имён?


#88

Поддерживаю. Если можно, не убирайте их.


#89

10 сообщений перенесены в тему Болталка PascalABC.NET


#90

Да, согласен. Я тоже сторонник явных повторно открываемых namespaces. Просто написали, что они имеют ту же структуру, что и модуль - с initialization, finalization, а это как-то не очень.

Я бы делал namespaces как в C#. В любом месте файла можно объявить несколько namespaces


#91

Да, те, кто поддерживал эту идею, предлагали сделать именно так.


#92

С теоретической точки зрения как Вам такой вариант:

namespace A;
begin
  type
    TClass1 = class
    end;
end;

namespace A.B;
begin
  type
    TClass2 = class(TClass1)
    end;
end;

begin
  var (x, y) := (new A.TClass1(), new A.B.TClass2());
end.

?


#93

Это всё в одном файле? В принципе, идея хорошая, но я бы сделал так:

Namespace a // без Begin!
  Namespace b // Явно поместить его в a
  End;
End;

#94

Да, в одном.

В C# не принято вкладывать непосредственно одно пространство имён в другое, зависимость одного пространства имён от другого принято подчеркивать в его именовании (через точку). Вполне разумное решение - что будет, если пространства имён бесконечно вкладывать (непосредственно) друг в друга? Длинные отступы - вот что. А кому это надо?


#95

На ду! Их можно вкладывать, а через точку они пишутся, если разнесены по файлам и нет возможности сделать вложение.


#96

Как Вы это себе представляете?