为什么 `DOUBLE[]` 会在使用反引号表示的向量中导致语法错误?
为 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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。