7.1 Глобальные переменные
Глобальная переменная — это переменная, к которой можно получить доступ в любом месте Octave. Это в отличие от локальной переменной, к которой можно получить доступ только вне её текущего контекста, если она явно передана, например, как параметр при вызове функции (fcn (local_var1, local_var2)).
Переменная объявляется глобальной с помощью оператора объявления global. Следующие операторы — это объявления глобальных переменных.
global a global a b global c = 2 global d = 3 e f = 5
Обратите внимание, что квалификатор global распространяется только на следующий индикатор конца оператора, который может быть запятой (‘,’), точкой с запятой (‘;’) или новой строкой (‘'\n'’). Например, следующий код объявляет одну глобальную переменную a и одну локальную переменную b, которой присваивается значение 1.
global a, b = 1
Глобальная переменная может быть инициализирована только один раз в операторе global. Например, после выполнения следующего кода
global gvar = 1 global gvar = 2
значение глобальной переменной gvar равно 1, а не 2. Выполнение команды ‘clear gvar’ не изменяет указанное поведение, но ‘clear all’ — да.
Для доступа к универсальной переменной необходимо объявить переменную как глобальную в теле функции. Например,
global x function f () x = 1; endfunction f ()
не устанавливает значение глобальной переменной x в 1. Вместо этого создаётся локальная переменная с именем x, которой присваивается значение 1. Для изменения значения глобальной переменной x, её также необходимо объявить глобальной в теле функции, например, так
function f () global x; x = 1; endfunction
Передача глобальной переменной в список параметров функции создаст локальную копию и не изменит глобальное значение. Например, задана функция
function f (x) x = 0 endfunction
и определена x как глобальная переменная на верхнем уровне,
global x = 13
выражение
f (x)
отобразит значение x изнутри функции как 0, но значение x на верхнем уровне останется неизменным, потому что функция работает с копией своего аргумента.
Примечание по программированию: Хотя глобальные переменные иногда являются правильным решением для проблемы программирования, их использование современными лучшими практиками не рекомендуется. Код, зависящий от глобальных переменных, может вести себя непредсказуемо между разными пользователями и может быть сложным в отладке. Это потому, что глобальные переменные могут вносить системные изменения, так что локализация ошибки до определённой функции или определённой итерации в функции становится сложной.
- : isglobal (name)
Возвращает true, если name является глобально видимой переменной.
Например:
global x isglobal ("x") ⇒ 1
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v6.4.0/Global-Variables.html