为什么 `DOUBLE[]` 会在使用反引号表示的向量中导致语法错误?

编程语言 2026-07-08

loadText 定义模式时,我需要指定列类型。某些列是数组向量,类型名类似于 DOUBLE[]LONG[]

我尝试使用反引号符号向量,这是DolphinDB中编写类型列表的标准方式:

colNames = `symbol`date`bidPrice`bidQty
colTypes = [`SYMBOL, `INT, `DOUBLE[], `LONG[]]
schema = table(colNames as name, colTypes as type)

语法错误:

无效表达式:] , LONG [ ] , DOUBLE [ ] , ...

解析器似乎将 [] 视作语法标记,而不是类型名的一部分。

改用字符串字面量就能工作:

colTypes = ["SYMBOL", "INT", "DOUBLE[]", "LONG[]"]
schema = table(colNames as name, colTypes as type)

但我很好奇——在DolphinDB的其他地方,类型确实以字符串形式表示(例如,schema() 会把它们作为字符串返回)。这种对反引号的限制是设计如此,还是解析器的限制?

解决方案

我怀疑这其实不是关于类型本身,而是关于对字符串使用反引号。

关于DLang语法的[教程]条目指出:

反引号不能包含特殊字符。

它没有定义(据我所见)什么是“特殊字符”。

[向量文档]指出:

如果所有元素都是一个词,用反引号创建一个STRING向量是很方便的

它没有在这里定义“词”的含义;它给出一个使用空格的后续示例,但我推测 [ 会被视为“非词字符”或“特殊字符”。

你大概可以完全把这与类型分开测试,只需尝试:

test = `xyz[]
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章