Database DolphinDB在重新分配未定义变量时引发异常

Database DolphinDB在重新分配未定义变量时引发异常,database,scope,dolphindb,undef,Database,Scope,Dolphindb,Undef,在DolphinDB中,我定义了一个变量,称为undef函数来取消定义它,并为它重新分配了一个向量。但是我的代码抛出了一个我无法理解的异常 为了简化问题,我将提供一个引发异常的最小示例: a = 0 undef(`a, VAR) a = [1] 执行上述代码后,我得到了以下异常: a = 0 undef(`a, VAR) a = [1] 赋值语句失败,可能是由于无效的索引[a=[1]] 我想知道我的代码有什么问题,以及如何正确编写。要回答您的问题,让我解释一下DolphinDB是如何执行脚本

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

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

a = 0
undef(`a, VAR)
a = [1]
执行上述代码后,我得到了以下异常:

a = 0
undef(`a, VAR)
a = [1]
赋值语句失败,可能是由于无效的索引[a=[1]]


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

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

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

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