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