如果我的变量存储从文件读取的数据,为什么它不受某些内置函数的影响?
Why is my variable unaffected by certain built-in functions if it stores data read from a file?
我有一个名为 01.in
的文件,在我 运行 的同一个文件夹中。它包含一行,其中有一串数字。例如,假设它包含以下字符串:1122
.
我从该文件中读取数据,将其转换为整数列表,并使用以下行将其存储在变量 a
中:
a:("i"$read0 `:01.in)-"i"$"0"
现在,如果我尝试使用某些二元内置函数,例如 xprev
或 rotate
,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 的新手,所以如果这是我遗漏的明显内容,我深表歉意。
通过您读取文件的方式,您正在创建一个嵌套列表:
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
我有一个名为 01.in
的文件,在我 运行 的同一个文件夹中。它包含一行,其中有一串数字。例如,假设它包含以下字符串:1122
.
我从该文件中读取数据,将其转换为整数列表,并使用以下行将其存储在变量 a
中:
a:("i"$read0 `:01.in)-"i"$"0"
现在,如果我尝试使用某些二元内置函数,例如 xprev
或 rotate
,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 的新手,所以如果这是我遗漏的明显内容,我深表歉意。
通过您读取文件的方式,您正在创建一个嵌套列表:
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