Пространства имён

namespace NameSpaceName {
    // ...
}

Всё, что внутри скобок, находится в пространстве имён NameSpaceName и доступ к нему должен производится соответствующим образом. Код за пределами этого пространства имён должен указывать полное имя (включая имя пространства имён) для всего что находится внутри этого пространства имён, или же, с помощью директивы using, импортировать это пространство имён.

using NameSpaceName;

// ...

Например, если пространство Gtk импортировано директивой using Gtk; вы можете написать просто Window, вместо Gtk.Window. Полностью квалифицированное имя будет необходимо лишь в случае неопределённости, например между GLib.Object и Gtk.Object.

Пространство имён GLib импортируется по умолчанию. Представьте невидимую строку using GLib; в начале каждого файла с кодом на Vala.

Всё, что вы не положите в некое пространство имён, располагается в анонимном глобальном пространстве имён. Если для избежания двусмысленности вам нужно явно обратиться к глобальному пространству имен, вы можете сделать это с помощью префикса global::.

Пространства имён могут быть вложенными, путём вложения одного определения в другое, или же давая имена в виде NameSpace1.NameSpace2.

Некоторые другие типы определений могут быть объявлены внутри некого пространства имён используя то же соглашение по именованию, например class NameSpace1.Test { ... }. Обратите внимание, что конечном итоге, определение будет находится в пространстве имён, в которое вложено объявление, плюс пространство имён, объявленное в определении.

Last updated