DolphinDB генерирует исключение при переназначении неопределенной переменной - PullRequest
1 голос
/ 06 июня 2019

В DolphinDB я определил переменную, вызвал функцию undef для ее отмены и переназначил вектор для нее.Но мой код выдал исключение, которое я не мог понять.

Чтобы упростить проблему, я приведу минимальный пример, который выдает исключение:

a = 0
undef(`a, VAR)
a = [1]

После выполнения предыдущего кода яполучил это исключение:

Оператор назначения не выполнен, вероятно, из-за недопустимых индексов [a = [1]]

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

1 Ответ

1 голос
/ 07 июня 2019

Чтобы ответить на ваш вопрос, позвольте мне объяснить, как DolphinDB выполняет сценарии.

DolphinDB должен отсканировать сценарий дважды.В первом раунде он анализирует все строки скрипта и проверяет определения переменных, определения функций, аргументы функций и т. Д. DolphinDB пытается обнаружить столько синтаксических ошибок во время синтаксического анализа.Во втором раунде он выполняет строки сценария одну за другой.

Вернитесь к своему вопросу.В раунде анализа DolphinDB находит одну переменную a и помещает ее в стек.Вызов функции undef выполняется во время выполнения (второй раунд).Он удаляет переменную из стека, поэтому третья строка вызывает исключение, поскольку переменная вообще не существует.

...