通过名称分配多个局部变量

时间:2019-01-04 11:52:43

标签: kdb

如何通过名称分配多个 local 变量?

例如,在lambda中,如下所示:

{
 @[;:;] (.') flip (`a`b;4 2);
 (a;b)
 }[] / should return 4 2

但是显然不起作用,因为

q)@[`a;:;4]                                                                                   
'type

q):[`a`b;4 2]
'assign

并使用set

q)set'[`a`b;4 2]

分配给 全局 ,而不是本地环境。

1 个答案:

答案 0 :(得分:2)

我相信,如果没有可靠的解决方案,并且不知道需要本地化的原因,那么很难以这种方式保存局部变量,那么很难产生可以提供帮助的解决方案。但是,这里有一些建议:

  1. 如果您不希望在执行结束时使用全局变量,则可以将它们另存为全局变量,然后在退出前将其删除
  2. 如果您不希望覆盖现有的全局变量,那么我建议将这些变量保存在本地字典中,而不要使用变量名称作为键。例如。 (!). (`a`b;4 2)

您可以使用来访问局部变量

q){c:3;?[(`$())!();();0b;`c]}[]
3

但是这里的问题是给局部变量赋值。