2015年4月19日日曜日

[kdb] Loop: ループと関数

ループ処理に関するメモ
※ループ処理は基本的に遅いので、できるだけループ処理は行わないようにするのがよい


・ループ処理
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 件のコメント:

コメントを投稿