※ループ処理は基本的に遅いので、できるだけループ処理は行わないようにするのがよい
・ループ処理
kdbのループ処理は while, do, 関数(each) で行う。
do[count;exp1;...;expn]
while[test;exp1;...;expn]
function[] each xxx
・for文のループ
for文は存在しないので、for文に相当する処理を行うためには、以下の2通りの方法で行う。
(1) index 付き while or do
(2) 関数をeachで呼ぶ
(1) index 付き while or do
q) i:0; x:1; q) do[5; x*:2; i+:1] / do q) x 32 q) i:0; x:1; q) while[i<5; x*:2; i+:1] / while q) x 32(2) 関数をeachで呼ぶ 処理部分を関数化すればeachで呼ぶことができる。peachを使うことで並列実行可能
q) L: -10#til 110
q) x:()
q) i:0
q) do[10; x,:L@i; i+:1]
q) x
100 101 102 103 104 105 106 107 108 109
q) {x@y}[L;] each til 10
100 101 102 103 104 105 106 107 108 109
0 件のコメント:
コメントを投稿