最简单形式的.运算符用于索引列表。您如何在此代码中解释其在英语中的用法?
if[x~"last";upd:{[t;x].[t;();,;r::select by sym from x]}]
我也不理解这一行中的空列表和::运算符,但也许它们一旦理解就会有意义。被清除了。
答案 0 :(得分:6)
用简单的英语我会解释为: 通过将append / comma函数应用于值r。
来修改all()索引处的表t首先考虑一些简单的@:
案例q)l:3 5 7 9
q)l:1.1 2.2 3.3
q)@[l; 0 2; +; 10]
11.1 2.2 13.3
q)d:`p`o`i!4.4 5.5 6.6
q)@[d; `p`i; -; 10]
p| -5.6
o| 5.5
i| -3.4
正如您所看到的格式是 的 @ [数据结构;指数;功能;的y参数] 强>
表示索引处的dataStructure应用具有给定y参数的函数。注意列表l索引0 2意味着索引0和2在最顶层。没有办法使用@来深度索引。例如给定矩阵m:(1 2 3; 4 5 6; 7 8 9)我们如何使用这种格式只修改值4和6?
q)/ @ indexes repeatedly at topmost level
q)/ definitely not what we want
q)@[m;(1;0 2);+;100]
101 102 103
104 105 106
107 108 109
q)/ **. indexes into the data structure**
q).[m;1 2;+;100]
1 2 3
4 5 106
7 8 9
q).[m;(1;0 2);+;100]
1 2 3
104 5 106
7 8 9
最后,空列表()是一种简短的说法,适用于所有索引:
q).[m;();+;100]
101 102 103
104 105 106
107 108 109
答案 1 :(得分:1)
.
在这种情况下,请将,
应用于t
和r
。 r
针对每次调用进行全局更新,并包含sym
收到的最新值。在大多数情况下,::
是对全局的分配。
code.kx.com详细描述了.
功能