kdb q: '{ 由于换行而出错?
kdb q: '{ error because of newline?
我是一个 q 新手,正在尝试编写一个 csv 保存函数
CSVsave:{[filename;table]
filename: $[-11h = type filename;filename;`$":", filename];
@[hdel;filename;()];
h: hopen filename;
(neg h) csv 0: table;
hclose h;
};
当我将其放入文件 IO.q 并执行
\l IO.q
我收到一条错误消息
k){0N!x y}
'{
@
"q"
"CSVsave:{[filename;table]\n filename: $[-11h = type filename;filename;`$\..
但是如果我删除新行并将所有内容放在一行中
CSVsave:{[filename;table] filename: $[-11h = type filename;filename;`$":", filename]; @[hdel;filename;()]; h: hopen filename; (neg h) csv 0: table; hclose h;};
运行良好。
我是否漏掉了一些明显的东西?
最后一个括号前的 space。
CSVsave:{[filename;table]
filename: $[-11h = type filename;filename;`$":", filename];
@[hdel;filename;()];
h: hopen filename;
(neg h) csv 0: table;
hclose h; };
我还建议尝试使用 kdb IDE。而不是必须不断地节省负载。例如qStudio
任何多行代码都需要在脚本中缩进。大多数人无论如何都会缩进他们的函数体,所以只注意右大括号。如果你有像
这样的脚本
select ...
from ...
where ...
那么以 "from" 和 "where" 开头的行也需要缩进。或者至少我上次尝试过。
另外,非常推荐kdb studio!我无法想象没有它的发展。
几年前,当我刚接触 q 时,我花了一天时间试图找出我做错了什么。答案是您需要 space 在结束花括号之前。它可以独占一行,但前面只需要一个 space。为什么?不知道。就是这样。
CSVsave:{[filename;table]
filename: $[-11h = type filename;filename;`$":", filename];
@[hdel;filename;()];
h: hopen filename;
(neg h) csv 0: table;
hclose h;
};
我是一个 q 新手,正在尝试编写一个 csv 保存函数
CSVsave:{[filename;table]
filename: $[-11h = type filename;filename;`$":", filename];
@[hdel;filename;()];
h: hopen filename;
(neg h) csv 0: table;
hclose h;
};
当我将其放入文件 IO.q 并执行
\l IO.q
我收到一条错误消息
k){0N!x y}
'{
@
"q"
"CSVsave:{[filename;table]\n filename: $[-11h = type filename;filename;`$\..
但是如果我删除新行并将所有内容放在一行中
CSVsave:{[filename;table] filename: $[-11h = type filename;filename;`$":", filename]; @[hdel;filename;()]; h: hopen filename; (neg h) csv 0: table; hclose h;};
运行良好。
我是否漏掉了一些明显的东西?
最后一个括号前的 space。
CSVsave:{[filename;table]
filename: $[-11h = type filename;filename;`$":", filename];
@[hdel;filename;()];
h: hopen filename;
(neg h) csv 0: table;
hclose h; };
我还建议尝试使用 kdb IDE。而不是必须不断地节省负载。例如qStudio
任何多行代码都需要在脚本中缩进。大多数人无论如何都会缩进他们的函数体,所以只注意右大括号。如果你有像
这样的脚本select ...
from ...
where ...
那么以 "from" 和 "where" 开头的行也需要缩进。或者至少我上次尝试过。
另外,非常推荐kdb studio!我无法想象没有它的发展。
几年前,当我刚接触 q 时,我花了一天时间试图找出我做错了什么。答案是您需要 space 在结束花括号之前。它可以独占一行,但前面只需要一个 space。为什么?不知道。就是这样。
CSVsave:{[filename;table]
filename: $[-11h = type filename;filename;`$":", filename];
@[hdel;filename;()];
h: hopen filename;
(neg h) csv 0: table;
hclose h;
};