Kdb +有名词,动词和副词.所有数据对象和函数都是名词. 动词通过减少表达式中的方括号和括号的数量来增强可读性. 副词修改二元(2个参数)函数和动词以产生新的相关动词.副词产生的函数称为派生函数或派生动词.
副词每个,用(`)表示,修改二元函数和动词以应用于列表项而不是列表本身.看看以下示例 :
q)1,(2 3 5)/加入 1 2 3 5 q)1,'(2 3 4)/加入每个 1 2 1 3 1 4
对于使用关键字"each"的monadic函数,有一种 Each 形式.例如,
q)reverse ( 1 2 3; "abc") /Reverse a b c 1 2 3 q)each [reverse] (1 2 3; "abc") /Reverse-Each 3 2 1 c b a q)'[reverse] ( 1 2 3; "abc") 3 2 1 c b a
每个二元函数有两种变体,称为每个左 - (\ :)和每个 - 右(/:).以下示例说明如何使用它们.
q)x: 9 18 27 36 q)y:10 20 30 40 q)x,y / join 9 18 27 36 10 20 30 40 q)x,'y / each 9 10 18 20 27 30 36 40 q)x: 9 18 27 36 q)y:10 20 30 40 q)x,y / join 9 18 27 36 10 20 30 40 q)x,'y / each, will return a list of pairs 9 10 18 20 27 30 36 40 q)x, \:y / each left, returns a list of each element / from x with all of y 9 10 20 30 40 18 10 20 30 40 27 10 20 30 40 36 10 20 30 40 q)x,/:y / each right, returns a list of all the x with / each element of y 9 18 27 36 10 9 18 27 36 20 9 18 27 36 30 9 18 27 36 40 q)1 _x / drop the first element 18 27 36 q)-2_y / drop the last two element 10 20 q) / Combine each left and each right to be a / cross-product (cartesian product) q)x,/:\:y 9 10 9 20 9 30 9 40 18 10 18 20 18 30 18 40 27 10 27 20 27 30 27 40 36 10 36 20 36 30 36 40