如果存储从文件读取的数据,为什么我的变量不受某些内置函数的影响?

时间:2018-04-29 23:52:15

标签: kdb

我有一个名为01.in的文件,位于运行q的同一个文件夹中。它包含一行,其中包含一串数字。例如,我们假设它包含以下字符串:1122

我从这个文件中读取数据,将其转换为整数数字列表,并使用以下行将其存储在变量a中:

a:("i"$read0 `:01.in)-"i"$"0"

现在,如果我尝试使用某些二元内置函数,例如xprevrotate,q解释器将输出任何内容或原始列表。例如:

q)a
1 1 2 2
q)-1 xprev a

q)0 xprev a
1 1 2 2
q)1 xprev a

q)-1 rotate a
1 1 2 2
q)0 rotate a
1 1 2 2
q)1 rotate a
1 1 2 2

如果我直接在列表1 1 2 2上使用它们,那些相同的功能就会起作用。我试图理解为什么我所做的并不像我预期的那样工作。只是一个抬头:我对q很新,所以如果这是我不知道的明显事件,我会道歉。

1 个答案:

答案 0 :(得分:4)

通过阅读文件的方式,您将创建一个嵌套列表:

q)type a
0h
q)0N!a;
,1 1 2 2i

这里我使用0N!来显示原始结构,,表示这是一个嵌套列表。相反,尝试阅读这样的内容:

q)a:"I"$'first read0`:01.in
q)a
1 1 2 2i
q)-1 xprev a
1 2 2 0Ni