函数的KDB命名空间

函数的KDB命名空间,kdb,Kdb,我有一个函数 f:{[t;c]; q: (1.0;0.8;0.6;0.4;0.2); tc:(cols[t] where cols[t] like c)[0]; sorted:desc t[tc]; qt:( {x: "i"$sorted["i"$x*count sorted]} each q) ! q; k:asc key qt; {[t;c;n;f] @[t;n;:;f t c]}[t;c;`quint;{[x] qt k k binr "i"

我有一个函数

f:{[t;c];
    q: (1.0;0.8;0.6;0.4;0.2);
    tc:(cols[t] where cols[t] like c)[0];
    sorted:desc t[tc];
    qt:( {x: "i"$sorted["i"$x*count sorted]} each q) ! q;
    k:asc key qt;
    {[t;c;n;f] @[t;n;:;f t c]}[t;c;`quint;{[x] qt k k binr "i"$x}]
    }

当我试图调用它时,它返回错误:sorted。在
{x:“i”$sorted[“i”$x*count sorted]}
中,似乎无法访问函数中声明的变量。但是,如果我在函数外部声明它们,那么它们是可访问的(并且我可以成功调用函数)。是否有方法使它们可供
{…}
使用?

要访问
排序的
,可以将其作为参数传递给函数

{"i"$x["i"$y*count x]}[sorted]each q
这同样适用于第二个lambda和最后一行,再次将参数
qt
k
传递给它:

{x y y binr "i"$z}[qt;k]

啊,很好用,谢谢。我试着把它们传进去,但是完全掉到了轨道上,试着像{“I”$x[“I”$y*count x]}每个排序的交叉点q。谢谢