无法将多个参数传递给 kdb 中的每个函数

Unable to pass multiple arguments to each function in kdb

我如何将 2 个变量传递给 lambda 函数,其中 x 是一个数字,y 是一个符号。 我已经写了这个,但它不会处理

{[x;y]
    // some calculation with x and y
}
each ((til 5) ,\:/: `a`b`c`d`f)

好像是在抱怨我少了一个arg

这是一个我认为符合您要求的示例:

q){string[x],string y}./: raze (til 5) ,\:/: `a`b`c`d`f

您的示例的问题是您需要清除 ((til 5) ,\:/: `a`b`c`d`f) 的输出以获得 2 个输入的列表。

将变量列表传递给函数是使用“.”完成的。 (点应用)http://code.kx.com/q/ref/unclassified/#apply .例如

q){x+y} . 10 2
12

在我的示例中,我使用了 "each right" 然后应用于每对。 http://code.kx.com/q/ref/adverbs/#each-right

或者,如果将函数包装在另一个 lamda 中,则可以使用 each 代替

q){{string[x],string y} . x} each raze (til 5) ,\:/: `a`b`c`d`f

而不是使用 cross 或 ",/:\:" 生成参数列表并将其中的 each 传递到您的函数中, 修改你的函数,每左每右 ("/:\:") 给你所有的组合。他应该采用格式;

x f/:\: y

其中 x 和 y 都是列表。重用示例 {string[x],string y};

til[5] {string[x], string y}/:\:`a`b`c`d

这将为您提供 x 和 y 的所有组合的矩阵。如果您想展平该列表,请添加 'raze'