我一直在阅读KX维基上的@修正案,其中指出:
@
(修订)语法:
@[x;i;f]
语法:@[x;i;f;a]
语法:@[x;i;f;v]
功能修正凡
的第二个参数域中的向量
x
是一个列表(或文件符号,见提示)
i
是索引为x
的int矢量f
是一个功能
a
是f
的第二个参数域中的原子v
是f
使用似乎行为相似的@
和.
混淆,我尝试使用空列表代替索引,发现每个列表都区别对待:
q)a
1 2 3
q)@[a;();+;100]
1 2 3
q).[a;();+;100]
101 102 103
似乎使用@
使用()
等于'无索引'而使用.
等于'所有索引'。为什么会出现这种对比行为?
答案 0 :(得分:0)
差异可以降低到两种修正的嵌套水平。 @
用于多级嵌套,enlist
用于单个级别(列表)。通过在使用.
时将a
与索引一起使用,我们将索引嵌套并为您提供的q)a
1 2 3
q)@[a;();+;100]
1 2 3
q).[a;enlist();+;100]
1 2 3
q)@[a;(::);+;100]
101 102 103
q).[a;enlist(::);+;100]
101 102 103
q)@[a;1 2;+;100]
1 102 103
q).[a;enlist 1 2;+;100]
1 102 103
这样的简单列表获取相同的输出:
()
将.
与(::)
一起使用等同于登记的空函数q)show m:3 cut 1+til 9
1 2 3
4 5 6
7 8 9
q)@[m;1 2;+;100]
1 2 3
104 105 106
107 108 109
q).[m;enlist 1 2;+;100] / nest with enlist
1 2 3
104 105 106
107 108 109
q).[m;(1 2;::);+;100] / nest with null func
1 2 3
104 105 106
107 108 109
。
应该注意的是,这种关系适用于复杂的列表:
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl</artifactId>
<version>${lwjgl.version}</version>
</dependency>