如何在KDB/Q中获取可用函数及其参数的列表?

如何在KDB/Q中获取可用函数及其参数的列表?,kdb,Kdb,如何获取给定命名空间中可用函数及其参数的列表? 对于函数,只需给出函数名,就必须单独检查参数 .n.function 不仅会给你参数,还会给你整个函数定义。除了Naveen的答案之外,你还可以调用value functionName,它会给你一个项目列表,例如参数名和编译的字节码。这当然可以改进,但我想我会分享一个快速启动的方法。这将检索每个工作区中的每个全局用户定义函数,并创建一个从函数到参数的命名空间字典 q)getparams:{k!{n[w]!@'[;1] value each f

如何获取给定命名空间中可用函数及其参数的列表?

对于函数,只需给出函数名,就必须单独检查参数

.n.function

不仅会给你参数,还会给你整个函数定义。

除了Naveen的答案之外,你还可以调用
value functionName
,它会给你一个项目列表,例如参数名和编译的字节码。这当然可以改进,但我想我会分享一个快速启动的方法。这将检索每个工作区中的每个全局用户定义函数,并创建一个从函数到参数的命名空间字典

 q)getparams:{k!{n[w]!@'[;1] value each f w:where 100h=type each f:get each ".",/:"." sv/:string x,/:n:y x}[;m]  each key m:k!system each "f .",/:string k:key `}
 q)f1:{x+y+z}
 q).n1.f2:{x*x}
 q).n1.a:2
 q).n2.f3:{y+y}
 q)show r:getparams[]
 q | `aj`aj0`asc`asof`avgs`cols`cor`cov`cross`cut`desc`dev`each`ej`except`fby`..
 Q | `Cf`IN`L`S`V`addmonths`bv`chk`cn`d0`dd`def`dpft`dpt`dsftg`dt`en`f`fc`ff`f..
 h | `cd`code`data`eb`ec`ed`edsn`es`fram`ha`hb`hc`hn`hr`ht`hta`htac`htc`html`h..
 n1| (,`f2)!,,`x
 n2| (,`f3)!,`x`y
q)r[`n1;`f2]
,`x
[编辑]原始功能错误。它缺少全局名称空间(`),并且没有捕获组合,也没有捕获用副词定义的函数。下面的内容纠正了这一点,但似乎过于复杂。不过我还是会把它留在这里,以防有人想发布更好的解决方案(这样我也可以从中学习)


我发现
get
可以为给定函数获取参数。我意识到这是一个古老的线程,但有没有办法只引用第一个空白的名称空间,即我只想构建一个自定义函数与本机q函数的字典?提前感谢,非常有用的帖子!
 q)getparams:{k!{n[w]!@'[;1] value each f w:where 100h=type each f:get each ".",/:"." sv/:string x,/:n:y x}[;m]  each key m:k!system each "f .",/:string k:key `}
 q)f1:{x+y+z}
 q).n1.f2:{x*x}
 q).n1.a:2
 q).n2.f3:{y+y}
 q)show r:getparams[]
 q | `aj`aj0`asc`asof`avgs`cols`cor`cov`cross`cut`desc`dev`each`ej`except`fby`..
 Q | `Cf`IN`L`S`V`addmonths`bv`chk`cn`d0`dd`def`dpft`dpt`dsftg`dt`en`f`fc`ff`f..
 h | `cd`code`data`eb`ec`ed`edsn`es`fram`ha`hb`hc`hn`hr`ht`hta`htac`htc`html`h..
 n1| (,`f2)!,,`x
 n2| (,`f3)!,`x`y
q)r[`n1;`f2]
,`x
  getparams:{k!{n[w][w2]!@'[;1] v w2:where 0h=type each v:value/[{type[x] in y}[;t]; ] each f:f w:where in[ ;(t:"h"$100,105+til 7)] type each f:get each `$".",/:"." sv/:string x,/:n:y x}[;m]  each key m:k!system each "f .",/:string k:`,key `}