KDB+/Q中如何正确对嵌套列表的元素重新赋值
报错原因
触发'assign报错的核心原因是嵌套结构的索引赋值语法不符合要求:
- 你当前使用的链式索引写法
L[7][1]仅支持取值操作,放在赋值运算符左侧时,无法被解析为原嵌套列表对应位置的可修改引用,会直接触发赋值错误。 - 你定义的
L本身是合法的可变嵌套日期列表,不存在数据结构不可修改的问题,不需要调整L的初始化逻辑。
复现代码参考
你的原始嵌套列表定义如下,是合法的可修改结构:
L:((2020.07.01 2020.09.30); (2020.10.01 2020.12.31); (2021.01.01 2021.03.31); (2021.04.01 2021.06.30); (2021.07.01 2021.09.30); (2021.10.01 2021.12.31); (2022.01.01 2022.03.31); (2022.04.01 2022.06.30))
你之前执行的错误赋值语句:
L[7][1]:2022.05.31
正确赋值方法
对嵌套列表的元素赋值时,需要将多级索引用分号分隔,统一放在同一个方括号内,不需要修改赋值运算符,正确语句如下:
L[7;1]:2022.05.31
执行完成后可以直接取值验证,输入L[7]将返回2022.04.01 2022.05.31,符合修改预期。
内容的提问来源于stack exchange,提问作者Cole
相关产品推荐
相关产品推荐

