在 Kdb 中,如何将每个符号列表分配给值列表

Posted

技术标签:

【中文标题】在 Kdb 中,如何将每个符号列表分配给值列表【英文标题】:in Kdb, how do I assign a list of symbols each to a list of values 【发布时间】:2021-07-21 06:04:38 【问题描述】:

例如,我想将包含 10 对的字典传递给函数以绕过 8 价限制。然后,我希望将字典的每个键都分配为局部变量,以分配给它们的值,并将其用作我的函数的参数。或者,有没有更好的方法来解决这个问题?

【问题讨论】:

我同意 Anton 的观点 - 为什么不直接通过查找使用字典中的变量呢?您不需要将它们作为命名的局部变量 【参考方案1】:

恐怕没有办法在功能上为局部范围变量赋值。例如

eval parse "a: 10";1b 

创建全局变量a

您可以修复一些范围名称,例如.l,在函数返回之前保留变量并清除范围,例如:


  eval each (:),'flip (`$".l.",/:string key x;value x);
  r: .l.a + .l.b + .l.c;
  delete from `.l;
  r
`a`b`c!1 2 3

但直接从输入字典(如x[`a])获取值似乎更容易和更清晰的方法。


apply 有助于简化调用其他函数,使用字典值作为参数。这可能是您正在寻找的。例如


  f: x+y+z;
  f . x`a`b`c
`a`b`c!1 2 3

【讨论】:

以上是关于在 Kdb 中,如何将每个符号列表分配给值列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用For语句将列表框中选择的项目分配到每个单元格中

R热图:将颜色分配给值

如何在子列表的插槽内分配组件

如何查看分配给值的原始代码,例如[x

如何在 KDB 中以二进制格式保存列表/矩阵?

不确定如何将对象列表分配给 .net core 中的用户