Ада-95. Компилятор GNAT

       

Переменные


Переменная может быть описана на уровне файла проекта или внутри пакета файла проекта. Примерами описания переменных может служить следующее:

This_OS : OS := external ("OS"); -- описание типированной переменной That_OS := "Linux"; -- описание нетипированной переменной

Любое описание типированной переменной начинается с имени переменной за которым следует символ двоеточия, затем следует имя строкового типа, сопровождаемое ":=" и, далее, простое строковое выражение.

Любое описание нетипированной переменной начинается с имени переменной за которым следует ":=", сопровождаемое выражением.

Следует заметить, что несмотря на терминологию, такая форма "описания" больше похоже на присваивание чем на описание в языке Ада. Такая форма является описанием в нескольких смыслах:

  • Имя переменной не нуждается в предварительном описании.
  • Описание основывает разновидность (строка или список строк) переменной, и последующие описания той же переменной должны быть согласованы

    Описание строковой переменной (типированной или нетипированной) описывает переменную значением которой является строка. Эта переменная может быть использована как строковое выражение. Например:

    File_Name := "readme.txt"; Saved_File_Name := File_Name & ".saved";

    Описание переменной списка строк описывает переменную значением которой является список строк. Такой список может содержать любое число (нуль и более) строк.

    Empty_List := (); List_With_One_Element := ("-gnaty"); List_With_Two_Elements := List_With_One_Element & "-gnatg"; Long_List := ("main.ada", "pack1_.ada", "pack1.ada", "pack2_.ada" "pack2.ada", "util_.ada", "util.ada");

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




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

    Однако, как отмечалось ранее, если переменная была описана как строковая, то все последующие описания должны предоставлять строковое значение.

    Подобным образом, если переменная была описана как список строк, все последующие описания переменной должны предоставлять значение в виде списка строк.

    Любая ссылка к переменной (или обращение к переменной) может иметь несколько форм:

  • Имя переменной, для переменных расположенных в текущем пакете (если есть) или в текущем проекте
  • Имя контекста, сопровождаемое символом точки и, далее, имя переменной.

    В качестве контекста переменной может служить:

  • Имя существующего пакета в текущем проекте.
  • Имя импортированного проекта в текущем проекте.
  • Имя проекта-предка (например, какой-либо проект, прямо или косвенно, расширяется текущим проектом).
  • Имя проекта-предка/импортируемого проекта, сопровождаемое символом точки и именем имени пакета.

    Ссылка (обращение) к переменной может быть использована в выражении.


    Содержание раздела