的.最简单形式的运算符用于索引列表.您如何在此代码中解释其在英语中的用法?
if[x~"last";upd:{[t;x].[t;();,;r::select by sym from x]}]
Run Code Online (Sandbox Code Playgroud)
我也不理解这一行中的空列表和::运算符,但也许它们一旦有意义就会有意义.被清除了.
用简单的英语我会解释为:通过应用带有值r的append/comma函数来修改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
Run Code Online (Sandbox Code Playgroud)
如您所见,格式为 @ [dataStructure; 指数; 功能; 的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
Run Code Online (Sandbox Code Playgroud)
最后,空列表()是一个简短的说法,适用于所有索引:
q).[m;();+;100]
101 102 103
104 105 106
107 108 109
Run Code Online (Sandbox Code Playgroud)