Как совместно использовать глобальные переменные в нескольких сценариях октавы?
Предположим, у меня есть три октавы скрипты a.m, b.m, c.m
, и две глобальные переменные x, y
. Можно ли определить эти глобальные переменные таким образом, чтобы они могли совместно использоваться в сценариях? Например, в отдельном файле include?
в более общем плане, как работают глобальные переменные в GNU octave?
4 ответов
Кажется, вы должны объявить переменную глобальной, а вы и должны явно сообщить Октаве, что переменная, на которую вы ссылаетесь, находится в другой (глобальной) области.
в библиотеке.м
global x = 1;
в Main.м
function ret = foo()
global x;
5 * x;
endfunction
foo () должен вернуть 5
как использовать глобальные переменные в Octave:
создайте файл с именем tmp.m и поместите в него следующий код.
global x; %make a global variable called x
x = 5; %assign 5 to your global variable
tmp2(); %invoke another function
создайте еще один файл с именем tmp2.m и поместите туда следующий код:
function tmp2()
%the following line is not optional, it tells this function go go out and get
%the global variable, otherwise, x will not be available.
global x
x
end
когда вы запускаете вышеуказанный код следующим образом:
octave tmp.m
вы получаете этот вывод:
x = 5
глобальная переменная x была сохранена в tmp.m и восстановлено в tmp2.м
что-то типа:
файл с глобальными переменными globals.m
С:
global my_global = 100;
и просто использовать source
внутри каждого файла. Например:
source globals.m
global my_global
printf("%d\n", my_global);
Не уверен, что это лучшее решение, но я закончил создание сценария-оболочки, из которого вызываются все остальные сценарии. Я положил свои глобалы в этот сценарий-обертку