【发布时间】:2018-08-20 23:55:37
【问题描述】:
我正在使用以下连接多个表
() uj/(a;b;c)
但是有没有办法传递一个表列表来实现这一点?
目前,如果我执行以下操作,则会收到类型错误
tbList:tables[]
() uj/(tbList)
谢谢
【问题讨论】:
标签: kdb
我正在使用以下连接多个表
() uj/(a;b;c)
但是有没有办法传递一个表列表来实现这一点?
目前,如果我执行以下操作,则会收到类型错误
tbList:tables[]
() uj/(tbList)
谢谢
【问题讨论】:
标签: kdb
uj 需要表参数,而tables[] 返回根命名空间中的变量名称,这些变量是表作为符号列表。
要从中获取表列表,您可以使用value each tables[],它将依次评估每个变量名称并将评估的表作为列表返回。
如果/ (over) 只提供了一个列表参数,它将把第一个元素作为初始值,因此您不需要像这样提供一个空列表作为初始值:
uj/[value each tables[]]
【讨论】:
从技术上讲,它可以通过传递表名来实现:
eval (uj/;enlist,`tab1`tab2`tab3)
但正如其他人建议的那样,使用value 可能更传统
【讨论】:
() uj/value each tbList
对符号赋值,返回它命名的变量的值。
【讨论】:
tables[] 直接返回一个符号列表,而通过在前面加上value each 我们返回一个表本身的列表