在dolphindb中,我定义了一个变量,调用了undef函数来取消对它的定义,并为它重新分配了一个向量。但我的代码抛出了一个我无法理解的异常。
为了简化问题,我将提供一个引发异常的最小示例:

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

在执行前面的代码之后,我得到了这个异常:
赋值语句失败的原因可能是索引无效[a=[1]]
我想知道我的代码出了什么问题,如何正确地编写它。

最佳答案

为了回答您的问题,让我解释一下dolphindb是如何执行脚本的。
Dolphindb需要扫描脚本两次。在第一轮中,它解析脚本的所有行,并检查变量定义、函数定义、函数参数等。dolphindb试图在解析时找出尽可能多的语法错误。在第二轮中,它逐个执行脚本行。
回到你的问题上来。在解析循环中,dolphindb找出一个变量a并将其放入堆栈中。函数调用undef在运行时执行(第二轮)。它从堆栈中移除变量,使得第三行抛出异常,因为变量根本不存在。

关于database - 重新分配 undefined variable 时,DolphinDB会引发异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56472345/

10-11 22:48