重新分配未定义的变量时,DolphinDB会引发异常

时间:2019-06-06 06:58:26

标签: database scope dolphindb undef

在DolphinDB中,我定义了一个名为undef的变量来取消定义它,并为它重新分配了一个向量。但是我的代码抛出了一个我无法理解的异常。

为简化问题,我将提供一个引发异常的最小示例:

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

执行上述代码后,我得到了这个异常:

  

赋值语句失败可能是由于无效索引[a = [1]]

我想知道我的代码出了什么问题以及如何正确编写它。

1 个答案:

答案 0 :(得分:1)

为回答您的问题,让我解释一下DolphinDB如何执行脚本。

DolphinDB需要扫描脚本两次。在第一轮中,它解析脚本的所有行,并检查变量定义,函数定义,函数参数等。DolphinDB尝试在解析时找出多达语法错误。在第二轮中,它逐行执行脚本行。

回到您的问题。在解析过程中,DolphinDB找到一个变量a并将其放入堆栈。函数调用undef在运行时(第二轮)执行。它将变量从堆栈中删除,因此第三行引发异常,因为该变量根本不存在。