Могу ли я загрузить переменные и функции из файла скрипта Octave в глобальную область из теста if? - PullRequest
1 голос
/ 27 сентября 2019

У меня есть скрипт, который выполняет много вычислений при запуске и определяет некоторые функции, и я хочу убедиться, что он загружается при запуске других скриптов.Я использую Octave 5.1.0, настроенный для x86_64-w64-mingw32.

. Сначала я пытался вызвать скрипт, только если одна из его переменных не exist('varName').Похоже, это не сработало, поэтому я выделил много переменных global, но они все еще не загружены в глобальные, и функции тоже не загружены.Скрипт работает хорошо, если я вызываю его с верхнего уровня REPL или с верхнего уровня другого скрипта (но не внутри теста if).Я также проверил другие вопросы, такие как октава: загрузить много функций из одного файла .

Это то, что я хочу сделать:

global all;
if (!exist('all'))
  prepareData
endif

Мне интересно, какпредоставлять глобальные переменные и функции в скрипте prepareData только при первом его запуске.

1 Ответ

1 голос
/ 27 сентября 2019

После прохождения процесса написания вопросов мне стало ясно, что я могу просто вставить if (!exist('all')) в исходный скрипт, чтобы он не загружал данные несколько раз.Итак, теперь в скрипте prepareData я просто поместил мою дорогую загрузку данных в это:

global all;
if (!exist('all') || length(all) < 1);
  # Expensive load calls
endif

, а в скрипте-потребителе я могу просто вызвать:

prepareData;

# Happily use data
...