我如何将2个变量传递给lambda函数,其中x是数字,y是符号。 我写过这个,但它不会处理
{[x;y]
// some calculation with x and y
}
each ((til 5) ,\:/: `a`b`c`d`f)
似乎在抱怨我错过了另一个arg。
答案 0 :(得分:3)
以下是我认为您正在寻找的一个例子:
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 .e.g
q){x+y} . 10 2
12
在我的例子中,我然后使用“每个权利”然后应用于每一对。 http://code.kx.com/q/ref/adverbs/#each-right
或者,如果您将函数包装在另一个lamda
中,则可以使用每个q){{string[x],string y} . x} each raze (til 5) ,\:/: `a`b`c`d`f
答案 1 :(得分:2)
而不是使用交叉或",/:\:"生成参数列表。并将的每个传递到你的函数中,每个左边都修改你的函数(" /:\:")给你所有的组合。他应该采用这种格式;
x f/:\: y
其中x和y都是列表。重用示例{string [x],string y};
til[5] {string[x], string y}/:\:`a`b`c`d
这将为您提供x和y的所有组合的矩阵。如果您想要展平该列表,请添加' raze'