KDB+ / Q 如何在函数内创建命名空间

时间:2021-03-12 20:17:57

标签: kdb

我试图构建一个接受命名空间名称、键列表和值列表的函数。但是,该函数无法读取命名空间的键和值。

例如:

q) makens:{[ns,keylist,valuelist] temp_ns: x.keylist.valuelist; set[.ns;temp_ns]}
q) makens:[`hello;`age`gender;`10 "M"]

我希望我的输出是:

q) .hello
         | ::
age      | `10
gender   | "M"

相反,命名空间不起作用,当我在最后使用 set 时,它不会读取 .ns 作为输入,即:

q) makens:[`hello;`age`gender;`10 "M"]
q) .hello
'.hello
  [3]  .hello
       ^
q) .ns
`10`M

1 个答案:

答案 0 :(得分:3)

您可以使用:

q)makens:{[ns;keylist;valuelist](` sv `,ns) upsert ((`,keylist)!(::),valuelist)};
q)makens[`hello;`age`gender;`10,"M"]
`.hello
q).hello
      | ::
age   | `10
gender| "M"
相关问题