【问题标题】:DolphinDB throws an exception when reassigning an undef-ed variableDolphinDB 在重新分配未定义的变量时抛出异常
【发布时间】:2019-06-06 06:58:26
【问题描述】:
在 DolphinDB 中,我定义了一个变量,调用 undef 函数来取消定义它,并重新分配一个向量给它。但是我的代码抛出了一个我无法理解的异常。
为了简化问题,我将提供一个引发异常的最小示例:
a = 0
undef(`a, VAR)
a = [1]
执行上述代码后,我得到了这个异常:
赋值语句失败可能是由于无效索引 [a = [1]]
我想知道我的代码有什么问题以及如何正确编写代码。
【问题讨论】:
标签:
database
scope
dolphindb
undef
【解决方案1】:
为了回答你的问题,让我解释一下 DolphinDB 是如何执行脚本的。
DolphinDB 需要扫描脚本两次。在第一轮中,它解析脚本的所有行并检查变量定义、函数定义、函数参数等。DolphinDB 试图在解析时找出尽可能多的语法错误。在第二轮中,它会逐行执行脚本。
回到你的问题。在解析回合中,DolphinDB 找出一个变量a 并将其放入堆栈。函数调用undef 在运行时(第二轮)执行。它从堆栈中删除变量,以便第三行抛出异常,因为该变量根本不存在。