将符号列表传递给函数参数时列表长度不兼容?

问题描述 投票:0回答:1

我有一个在主表上进行过滤的功能,如下所示:

condSel:{[tabl;colNames;colValues]
    wc: {(in;x;enlist y)}.'flip(colNames;colValues);
    res: ?[tabl;wc;0b;()];
    res

我可以单独应用它来过滤主表中的两列:

res_fltr1: condSel[t;enlist `s; enlist `s1];
res_fltr2: condSel[t;enlist `name; enlist `$("P Willy";"D Reim")];

但只有当我尝试在过滤器函数中组合这两列时,我才会收到不兼容的列表错误,我非常不确定如何修复:

res_fltr: condSel[t;`s`name;`s1`$("P Willy";"D Reim")];

我在这里缺少什么?如果我在

s
p
列上尝试此操作,而不是为每一列传递一个符号,那么就没有问题。

res_fltr: condSel[t;`s`p;`s1`p1];

下面的虚拟表:

s  p  qty   name
------------------
s1 p1 300  F James
s1 p2 200  P Willy
s1 p3 400  P Willy
s1 p4 200  D Reim
s4 p5 100  M Oxhart
s1 p6 100  P Willy
...
kdb
1个回答
0
投票

此语法不正确:

q)`s1`$("P Willy";"D Reim")
'type
  [0]  `s1`$("P Willy";"D Reim")

您需要使用

,
:

加入他们
q)`s1,`$("P Willy";"D Reim")
`s1`P Willy`D Reim
© www.soinside.com 2019 - 2024. All rights reserved.