Kdbplus-q-language-verb-adverbs

提供:Dev Guides
移動先:案内検索

Q言語-動詞と副詞

Kdb +には名詞、動詞、副詞があります。 すべてのデータオブジェクトと関数は*名詞*です。 *動詞*は、式の角括弧と括弧の数を減らすことにより、読みやすくします。 *副詞*ダイアディック(2つの引数)関数と動詞を変更して、新しい関連する動詞を生成します。 副詞によって生成される関数は、*派生関数*または*派生動詞*と呼ばれます。

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」を使用するモナド関数用の 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

各左および各右

*Each-Left* (\ :)および *Each-Right* (/:)と呼ばれるダイアディック関数用のEachの2つのバリアントがあります。 次の例は、それらの使用方法を説明しています。
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