为何DolphinDB中`DOUBLE[]`在反引号符号向量中引发语法错误?
关于DolphinDB loadText定义数组类型schema的疑问解答
这是DolphinDB的设计使然,并非解析器局限,具体原因如下:
反引号的作用边界:反引号在DolphinDB里是用来包裹基础标识符的,比如变量名、基础类型名(
DOUBLE、LONG这类)。但DOUBLE[]、LONG[]属于复合类型,解析器会把[]当成数组索引的语法标记,而非类型名的一部分,所以直接用DOUBLE[]会触发语法错误——它会被拆解成DOUBLE类型加索引操作,完全不符合schema类型定义的预期。字符串字面量的设计支持:loadText的schema参数在设计时就支持用字符串来定义复合类型,因为字符串可以完整保留复合类型的结构信息,不管是一维数组、多维数组还是其他嵌套类型,用字符串都能精准表达,不会出现解析歧义。
schema()返回字符串的原因:同样是设计考量,复合类型的结构没法用单一的标识符来表示,比如
DOUBLE[][](二维数组)、DOUBLE[5](固定长度数组)这类复杂类型,用字符串能清晰展示完整的类型结构,让用户一眼看懂列的类型细节。
举个简单的对比示例:
// 错误写法:触发语法错误 schema = table(1:0, `col1`col2, [`DOUBLE[]`, `LONG[]`]) // 正确写法:正常运行 schema = table(1:0, `col1`col2, ["DOUBLE[]", "LONG[]"])
内容的提问来源于stack exchange,提问作者Allan
相关产品推荐
相关产品推荐

