如何在KDB中将变量传递给多层嵌套内部函数?
实现可传递参数的peg函数
要实现0.06 peg x这种调用方式,只需将peg定义为二元函数,把阈值作为第一个参数传入即可。具体修改如下:
peg: {[thresh; x] {$[abs[log x%y] > thresh; y; x]} scan x}
说明:
- 外层函数
peg接收两个参数:第一个是阈值thresh(比如你需要的0.06),第二个是输入序列x。 - 内部的
scan匿名函数可直接访问外层函数的thresh参数,实现阈值的外部传递。 - 调用时直接使用前缀语法:
0.06 peg x,完全匹配你想要的调用形式。
示例验证:
假设输入序列x: 1.0 1.05 1.12 1.08 1.15,调用0.06 peg x会按阈值0.06执行扫描逻辑,返回对应的序列。
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

