Кто-нибудь знает, как сделать пространство имён?


#1

Мне вот интересует подобная вещь, как вот в System есть Windows или Environment) Будьте добры, подскажите :blush:


#2

Никак. В PascalABC.NET нет явных пространств имён.


#3

Очень жаль, а есть какая-нибудь возможность объединить несколько классов во что-нибудь одно внутри одного модуля, например несколько классов в один класс?


#4

разве что со статическими полями

type
  aT = class
  
  end;
  bT = class
  
  end;
  c = record
    class a := new aT;
    class b := new bT;
  end;

ну это не совсем то, статистические методы тогда надо писать как обычные, а обычные вообще никак


#5

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


#6

Разве что так писать: type System.Windows.Forms.Form = class end;

Описание класса образует пространство имен.


#7

На самом деле без этого жить вполне можно. Вовсе не обязательно из паскаля делать очередной С, подключая единовременно сто различных модулей.


#8

мож я что то не понял но так паскаль ругается на .


#9

Зачем же тогда слово namespace добавили в язык, если оно, как я понимаю, не несет никакой функциональности?


#10

несет. пространства имен описываются так же как и модули.

namespace MyF.Models;

type Product = class
end;

end.

но с одним лишь исключением: их надо подключать директивой {$includenamespace}. {$includenamespace *.pas}

Фича не афишируется, потому что там интеллисенс не сделан.


#11

MyF - тоже пространство имен?


#12

Отсутствие intelllisence - не причина скрывать такую важную возможность! Её уже пол года все ждут! Я правильно понял, что MyF -корневой неймспейс библиотеки?


#13

Отучайтесь говорить от имени всех, Вам никто такого права не делегировал.


#14

А разве кто-то (из этой ветки форума, разумеется) не ждёт этого? А так да, извиняюсь.


#15

Да. Только, судя по всему, корневое. То есть, сама библиотека.