#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:
Вы можете использовать:
q)makens:{[ns;keylist;valuelist](` sv `,ns) upsert ((`,keylist)!(::),valuelist)};
q)makens[`hello;`age`gender;`10,"M"]
`.hello
q).hello
| ::
age | `10
gender| "M"