Q语言 - 动词和副词(Verb & Adverbs)

优质
小牛编辑
127浏览
2023-12-01

Kdb +有名词,动词和副词。 所有数据对象和函数都是nounsVerbs通过减少表达式中的方括号和括号的数量来增强可读性。 Adverbs修改二元(2个参数)函数和动词以产生新的相关动词。 副词derived functions称为derived functionsderived verbs

Each

each副词用(`)表示,修改二元函数和动词以应用于列表项而不是列表本身。 看看下面的例子 -

q)1, (2 3 5)      /Join
1 2 3 5
q)1, '( 2 3 4)    /Join each
1 2
1 3
1 4

对于使用关键字“each”的monadic函数,有一种形式。 例如,

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

每个左,右 - 右

每个二元函数有两种变体,分别叫做Each-Left (\ :)和Each-Right (/ :)。 以下示例说明了如何使用它们。

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