ภาษา Q - คำกริยาและคำวิเศษณ์
Kdb + มีนามกริยาและคำวิเศษณ์ อ็อบเจ็กต์ข้อมูลและฟังก์ชันทั้งหมดคือnouns. Verbs เพิ่มความสามารถในการอ่านโดยลดจำนวนวงเล็บเหลี่ยมและวงเล็บในนิพจน์ Adverbsแก้ไขฟังก์ชันและคำกริยา dyadic (2 อาร์กิวเมนต์) เพื่อสร้างคำกริยาใหม่ที่เกี่ยวข้อง ฟังก์ชันที่สร้างโดยคำวิเศษณ์เรียกว่าderived functions หรือ derived verbs.
แต่ละ
คำวิเศษณ์ eachแสดงโดย (`) แก้ไขฟังก์ชัน dyadic และคำกริยาเพื่อใช้กับรายการของรายการแทนที่จะเป็นรายการเอง ดูตัวอย่างต่อไปนี้ -
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 ที่ใช้คีย์เวิร์ด“ 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
แต่ละซ้ายและแต่ละขวา
มีสองตัวแปรของแต่ละฟังก์ชันสำหรับฟังก์ชัน dyadic ที่เรียกว่า 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