У меня есть функция

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}]
    }

Когда я пытаюсь вызвать его, он возвращает ОШИБКА: отсортировано. Кажется, переменные, объявленные внутри функции, недоступны в {x: "i"$sorted["i"$x*count sorted]}. Однако, если я объявляю их вне функции, они становятся доступными (и я могу успешно вызвать функцию). Есть ли способ сделать их доступными для {...}?

kdb
2
chrise 14 Фев 2018 в 09:11

1 ответ

Лучший ответ

Чтобы получить доступ к sorted, вы можете передать его в качестве аргумента функции.

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

То же самое относится и ко второй лямбде, и к последней строке, снова передавая ей аргументы qt и k:

{x y y binr "i"$z}[qt;k]
1
Thomas Smyth 15 Фев 2018 в 12:09