特定の名前空間で使用可能な関数とそのパラメーターのリストを取得するにはどうすればよいですか?
6433 次
3 に答える
4
これは確かに改善できますが、ボールを転がすための簡単な方法として共有したいと思います. これにより、すべてのワークスペースですべてのグローバル ユーザー定義関数が取得され、名前空間、関数、パラメーターの辞書が作成されます。
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 `}
于 2013-10-11T13:09:27.320 に答える
1
Naveenの回答に加えてvalue functionName
、パラメーター名やコンパイル済みバイトコードなどのアイテムのリストを表示する呼び出しを行うことができます
于 2013-10-06T09:04:57.227 に答える