Как совместно использовать глобальные переменные в нескольких октавных скриптах? - PullRequest
6 голосов
/ 11 января 2012

Предположим, у меня есть три октавных скрипта a.m, b.m, c.m и две глобальные переменные x, y.Можно ли определить эти глобальные переменные таким образом, чтобы их можно было использовать в разных сценариях?Например, в отдельном включаемом файле?

В целом, как работают глобальные переменные в октавной GNU?

Ответы [ 4 ]

8 голосов
/ 23 ноября 2012

Кажется, вам нужно объявить переменную глобальной, и вы также должны явно указать Octave, что переменная, на которую вы ссылаетесь, находится в другой (глобальной) области действия.

в library.m

global x = 1;

в main.m

function ret = foo()
    global x;
    5 * x;
endfunction

foo () должен вернуть 5

2 голосов
/ 29 мая 2013

Что-то вроде:

Файл с глобальными переменными globals.m с:

global my_global = 100;

И просто используйте source внутри каждого файла. Например:

source globals.m

global my_global

printf("%d\n", my_global);
2 голосов
/ 20 сентября 2012

Как использовать глобальные переменные в 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.m

0 голосов
/ 12 января 2012

Не уверен, что это лучшее решение, но в итоге я создал скрипт-обертку, из которого вызываются все остальные скрипты.Я поместил свои глобальные переменные в этот скрипт-оболочку

...