【问题标题】:KDB+ / Q How to create a namespace within a functionKDB+ / Q 如何在函数中创建命名空间
【发布时间】:2021-03-12 20:17:57
【问题描述】:

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

例如:

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

【问题讨论】:

    标签: kdb


    【解决方案1】:

    你可以使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      相关资源
      最近更新 更多