Spec-Zone.ru › Octave 7

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

См. также: isvarname, exist.

© 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/v7.2.0/Global-Variables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API