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 на верхнем уровне останется неизменным, потому что функция работает с копией своего аргумента.
Примечание по программированию: хотя глобальные переменные иногда являются правильным решением для проблемы программирования, современная практика их не рекомендует. Код, который полагается на глобальные переменные, может работать непредсказуемо между различными пользователями и может быть сложным для отладки. Это связано с тем, что глобальные переменные могут вносить системные изменения, что затрудняет локализацию ошибки в конкретной функции или в конкретном цикле внутри функции.
© 1996–2023 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/v8.1.0/Global-Variables.html