Kdb Enum不保存其键,只保留对键的引用
根据 列举 语法:Kdb Enum不保存其键,只保留对键的引用,kdb,k,Kdb,K,根据 列举 语法:x$y,$[x;y] 在哪里 x和y是列表 我认为创建enum的正确方法是向$提供列表: q)e:`a`b`c$`b`a`c`c`a`b 'length [0] e:`a`b`c$`b`a`c`c`a`b ^ 但显然不是这样。在阅读了更多示例后,我尝试了: q)mykeys:`a`b`c q)show e:`mykeys$`b`a`c`c`a`b `mykeys$`b`a`c`c`a`b 它是有效的。但是我看到我的enume包含它的值
x$y,$[x;y]
在哪里
和x
是列表y
enum
的正确方法是向$
提供列表:
q)e:`a`b`c$`b`a`c`c`a`b
'length
[0] e:`a`b`c$`b`a`c`c`a`b
^
但显然不是这样。在阅读了更多示例后,我尝试了:
q)mykeys:`a`b`c
q)show e:`mykeys$`b`a`c`c`a`b
`mykeys$`b`a`c`c`a`b
它是有效的。但是我看到我的enum
e
包含它的值,并且只引用了它的键mykeys
:
q)(key;value)@\:e
`mykeys
`b`a`c`c`a`b
q)`:e.raw set e
`:e.raw
因此,将e
保存到文件不会保存任何密钥!在新一届会议上:
q)e: get `:e.raw
q)e
`mykeys!1 0 2 2 0 1
q)mykeys
'mykeys
[0] mykeys
^
q)mykeys:`a`b`c
q)e
`mykeys$`b`a`c`c`a`b
我知道可以使用简洁的枚举扩展功能保存密钥:
q)`:mykeys?`b`a`c`c`a`b;
q)get `:mykeys
`b`a`c
但是为什么枚举的行为是这样的呢看起来它们几乎没有分裂成键和值。可能是在一个大的图片与表,索引,表伸展它更有意义
从文件加载后,枚举如何存在?当其密钥域尚不存在时,是否为半正常状态
q)e: get `:e.raw
q)e
`mykeys!1 0 2 2 0 1
这种行为是有意为之的,因为正如你所设想的那样,有一个更大、更普遍的图景 枚举主要用于:
?
`a`b`c$`b`a`c`c`a`b
不起作用是因为您要枚举的列表必须按名称传递,而不是按值传递。所以必须这样
`mykeys$`b`a`c`c`a`b
感谢您指出一个必须按名称传递的函数参数。我发现
get
要求其参数也是符号的人。它就像C
中的指针,对吗?如果我这样想的话,画面会更清晰。