奇怪的视图声明行为

Strange view declaration behaviour

在 q 3.6 32bit 中我看到了一些我无法解释的东西。 y1y2 的这两个表达式具有相同的解析树,结果差异太大:

q)x:3
q)parse"y :: x*10"
::
`y
(*;`x;10)
q)parse"y:: x*10"
::
`y
(*;`x;10)
q)y1 :: x*10
q)y2:: x*10
q)x:5
q)y1
30
q)y2
50

为什么space在这里这么有意义?

我相信在 kdb 中定义视图的条件是变量和 ::

之间不应有空格

因此在您的示例中,y2 是一个视图而 y1 不是,因此当您重新定义 x 时,y2 的值​​在被引用时更新而 y1 不是