代码之家  ›  专栏  ›  技术社区  ›  chrise

函数的KDB命名空间

kdb
  •  2
  • chrise  · 技术社区  · 6 年前

    我有一个功能

    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]} . 但是,如果我在函数外部声明它们,那么它们是可以访问的(并且我可以成功调用函数)。有没有办法让 {...} ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Thomas Smyth    6 年前

    访问 sorted 可以将其作为参数传递给函数。

    {"i"$x["i"$y*count x]}[sorted]each q
    

    这同样适用于第二个lambda和最后一行,再次传递参数 qt k 收件人:

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