根据https://code.kx.com/q/ref/enumerate/上的文档
枚举
句法:
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
它有效。但后来我看到 myenum
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