如何按名称分配多个局部变量?
例如,在 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]
分配给全局环境,而不是局部环境。
我相信
如果没有黑客解决方案,您将很难以这种方式保存局部变量,并且不知道它需要本地的原因,因此很难产生可以提供帮助的解决方案。但是,这里有一些建议:
- 如果您不希望在执行结束时使用全局变量,则可以将它们另存为全局变量并在退出之前将其删除
- 如果您不希望覆盖现有的全局变量,那么我建议将这些变量保存在本地字典中,而不是以变量名称作为键。
(!). (`a`b;4 2)
您可以使用以下命令访问局部变量
q){c:3;?[(`$())!();();0b;`c]}[]
3
但这里的问题是将值分配给局部变量。