按名称分配多个局部变量

  • 本文关键字:局部变量 分配 kdb
  • 更新时间 :
  • 英文 :


如何按名称分配多个局部变量?

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

您可以使用以下命令访问局部变量

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

但这里的问题是将值分配给局部变量。

最新更新