【问题标题】:How to get list of available functions and their parameters in KDB/Q?如何在 KDB/Q 中获取可用函数及其参数的列表?
【发布时间】:2013-10-04 19:51:58
【问题描述】:

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

【问题讨论】:

    标签: kdb


    【解决方案1】:

    http://code.kx.com/q/ref/syscmds/#f-functions

    \f .
    \f .namspace
    

    对于函数,您必须通过提供函数名称来单独检查参数

    .n.function
    

    不仅会提供参数,还会提供整个函数定义。

    【讨论】:

    【解决方案2】:

    这当然可以改进,但我想我会分享一个让球滚动的快速方法。这将检索每个工作区中的每个全局用户定义函数,并创建一个名称空间字典到函数到参数。

     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
    

    [EDIT] 原来的函数是错误的。它错过了全局命名空间 (`) 并且没有捕获组合或用副词定义的功能。下面更正了这一点,但似乎过于复杂。我还是把它留在这里,以防万一有人想发布更好的解决方案(这样我也可以从中学习)

      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 `}
    

    【讨论】:

    • 我意识到这是一个旧线程,但有没有办法只引用第一个空白名称空间,即我只想构建一个自定义函数与本机 q 函数的字典?提前感谢,一个非常有用的线程!
    【解决方案3】:

    除了 Naveen 的回答之外,您还可以致电 value functionName,它会为您提供项目列表,例如参数名称和编译后的字节码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多