gpt4 book ai didi

kdb - 使用 q 在函数内定义函数时的变量可见性

转载 作者:行者123 更新时间:2023-12-04 18:44:47 25 4
gpt4 key购买 nike

我正在定义一个包含另一个函数的函数:

find_badTicks:{ [tab;sec] // dummy function, for debug..
Ndays: 10i ;
dates: select distinct date from tab where sym = sec ;
closures: select last price by date from tab where sym = sec ;
returns: 1 _ select ( (price)-(prev price) )%(prev price) from closures ;
stdevs: {[x;y] sd[ (Ndays-1)#y _ x ] } [ (returns)[;`price] ] each til ( (1 - (Ndays-1)) + count (returns)[;`price] ) ;
:tab
}

如果我编译该函数,它就可以工作。如果我一一运行这些线路,它就可以工作。但是,如果我尝试调用该函数,则会出现错误:
  q)testTab: find_badTicks [testTab ; `ENI.IM.Equity] ;
'Ndays

如果我删除嵌套函数中的 Ndays,明确写入 10,它就可以工作。
Si 我猜这是嵌套函数内部局部变量可见性的问题,在函数执行中:即嵌套函数看不到 Ndays,这是函数 find_badTicks 的局部变量。
你知道如何让 Ndays 在内部函数中可见吗?
谢谢
马可

最佳答案

在函数内,您可以引用在该函数中定义的变量,也可以引用全局定义的变量(在主命名空间或其他命名空间中)。

中间函数中定义的变量在另一个函数中不可见,并且会导致值错误 - 正如您所见。

关于kdb - 使用 q 在函数内定义函数时的变量可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16830892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com