kdb+:使用字符串作为变量名

Jea*_*aul 3 kdb

如何使用字符串作为变量名?

我希望在运行时构造我的变量名,但是如何将其用作左参数并为其分配值?

例子:

[`$"test"] : 1              / 'assign error
Run Code Online (Sandbox Code Playgroud)

ter*_*nch 5

您可以使用“set”,但它会创建一个全局:

q){(`$"test") set 1;test}[]
1
q)test
1
Run Code Online (Sandbox Code Playgroud)

或(如user2393012在评论中所述):

@[`.;`test;:;1]
Run Code Online (Sandbox Code Playgroud)

如果你想避免全局变量,你可以使用某种命名空间/字典/映射:

q){d:()!();d[`$"test"]:1;d`test}[]
1
Run Code Online (Sandbox Code Playgroud)

  • 关于后一种 - 通用方式是@ apply on namespace - 非常有用!`@[\`.;\`test;:;1]` (4认同)
  • 尽管如此,这仍然会创建一个全球性的 - 只是要清楚 (3认同)