Перейти к основному содержимому

Инструкция объявления переменной

Способы объявления переменных

Вы можете использовать несколько способов объявления переменных:

  1. С указанием типа:

    модификатор имя-переменной: имя-типа
  2. С указанием значения:

    модификатор имя-переменной = выражение-инициализации
  3. С использованием составного типа:

    модификатор имя-переменной : имя-типа [|имя-типа ...][|имя-типа = выражение-инициализации]

Здесь:

  • модификатор

    Описывает вид переменной:

    • пер — переменная, доступная для чтения и записи;

      пер Переменная: Строка
      Переменная = "Строковое значение"
    • знч — переменная, доступная только для чтения;

      знч Исполняемый = Ложь // Тип файла
    • исп — переменная, тип которой является потомком типа Закрываемое. Такая переменная доступна только для чтения. При выходе из области видимости для такой переменной автоматически вызывается метод Закрыть()

      исп ВременныйПотокЗаписи = ВременныйФайл.ОткрытьПотокЗаписи()
    • конст — определяет именованное значение, которое синтаксически выглядит как переменная, но его нельзя изменить после объявления. Константа может быть объявлена только на уровне модуля. При объявлении константы необходимо указать значение инициализации, вычисление которого происходит во время компиляции. При инициализации константы литералом коллекции значение коллекции является неизменяемым. Правила вычислимости выражения приведены ниже.

      конст АРХИВ_ДОКУМЕНТОВ = "Documents.zip"
  • имя-переменной

    Имя определяемой переменной. С правилами формирования имен вы можете ознакомиться в статье Имена переменных.

  • имя-типа

    Имя типа.

  • выражение-инициализации

    Выражение, которое описывает начальное значение определяемой переменной.

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

    • Литералы (включая литералы коллекций) являются вычислимыми.

    • Обращения к константам модулей являются вычислимыми.

    • Операции над вычислимыми являются вычислимыми, кроме следующих исключений:

      • вызовы методов и обращения к свойствам,
      • вызовы конструкторов,
      • операции сложения значения типа Строка со значением другого типа.

      Если выражение не указано, то переменная инициализируется значением по умолчанию для типа переменной. Если для выбранного типа нет значения по умолчанию или в составном типе отсутствует тип Неопределено, то во время компиляции возникает ошибка инициализации переменной.

      Если в качестве типа переменной указан тип неизвестно или тип, включающий тип Неопределено, то переменная инициализируется значением Неопределено.

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

Переменные составного типа

Описание переменной составного типа содержит несколько типов, разделенных символом |. Если в составном типе отсутствует тип Неопределено, то необходимо указать выражение инициализации переменной.

пер Переменная: Строка|Число|Булево = 0

Если в составном типе присутствует тип Неопределено, то в списке типов он не указывается явно. Вместо него используется сокращение ?, которое пишется:

  • слитно с предыдущим типом, если типов всего два;

  • через символ |, если типов больше двух.

    пер Переменная1: Строка?
    пер Переменная2: Строка|Число|?

В этом случае переменная инициализируется значением Неопределено.

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

Общие рекомендации

При объявлении типизированной переменной следует понимать, что во время компиляции будет проверяться совместимость типов в выражении. Например, если переменная объявлена как Число, а ей присваивается строковое значение, то это приведет к ошибке. Если переменная объявлена с типом неизвестно, то во время компиляции контроль совместимости типов выполняться не будет. Однако проверки времени исполнения будут выполняться в любом случае.

Объявление переменной может располагаться в любом месте метода. При объявлении переменной следует помнить о следующих особенностях и ограничениях:

  • Не поддерживается объявление нескольких переменных в одной инструкции.
  • Переменная не может быть объявлена дважды в одной области видимости. Допускается объявлять переменную или описывать параметр метода так, что имя переменной или параметра будет совпадать с константой или именем свойства глобального контекста.
  • Имя переменной не может совпадать с именем параметра метода.
  • Переменная не может использоваться без предварительного объявления.
  • Переменная не может использоваться в собственном выражении инициализации.
  • Не поддерживается объявление переменной без указания типа или явного значения инициализации.
  • Если при объявлении переменной не указан ее тип, то он вычисляется из значения инициализации.

Пример

конст ФОТО = "Photos.zip"

метод ОбъявитьПеременные()
пер А: неизвестно // Неопределено
пер Б: Число // 0
пер В: Строка // "" (пустая строка)
пер Г: Строка? // Неопределено
пер Д: Строка|Число = 5 // 5

// Недопустимые объявления переменных
пер Е: Строка|Число // Не указано значение инициализации
пер Ж: Строка = [1, 2] // Данные инициализации не совпадают с указанным типом
;

См. также