7.1 Глобальные переменные ¶
См. ключевое слово: global
Глобальная переменная — это переменная, к которой можно получить доступ в любой точке 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/v9.2.0/Global-Variables.html