首页 > 解决方案 > 在 Kdb 中,如何将每个符号列表分配给值列表

问题描述

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

标签: functiondictionaryvariable-assignmentkdb

解决方案


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

{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

推荐阅读