Kdb+/q: 遍历初始化列表

Kdb+/q: Looping over initialised list

假设我创建了一个空 table:

test:([] name:`symbol$(); balance:`int$());

现在让我们用一行填充此列表:

insert[`test;(`John;1001)];

现在,如果我想按如下方式循环 table:

n:0;
k:0;
f:{x%100}
do[count test; k+:f[test.balance[n]]; n+:1]

然后它给了我一个错误,因为它试图通过函数 f.

使用(评估)空的初始化值

这不起作用有什么特别的原因吗?

我如何确保它有效?

您所做的可能有效,但远非最佳做法。循环和索引不是要走的路。

你要找的本质上是

test:([] name:`symbol$(); balance:`int$());
insert[`test;(`John;1001)];
insert[`test;(`Jane;2002)];

q)select sum f[balance] from test
balance
-------
30.03