func:raze {select compTypeOrigin from .get.order[2021.10.01;string x]}
list:(``abc`def`ggh``eef)
当我运行这个函数时,它工作了
raze {select compTypeOrigin from .get.order[2021.10.01;string x]} `abc
但是当它为空(')时,我得到了类型错误,可能是由于函数。get.order
我试图用受保护的求值运行函数
@[func;each list[0 + til 6];show]
但它不起作用如何跳过错误?
我认为您需要将每个('
)带到受保护的评估之外。试试这个语法:
q)f:{x*x}
q)list:(1;`a;3)
q)@'[f;list;{x}]
1
"type"
9
func
目前不是一个函数,而是一个混合列表。raze
应置于函数内,使其成为函数。
Error trap只捕获函数执行过程中的错误。在您的情况下,错误是在each list[0 + til 6]
期间设置参数期间预先抛出的。抛出错误的原因是each
需要两个参数(一个操作符和参数),而只提供了一个。
/ func is currently not a function, but a mixed list
q)type func
0h
/ put the raze inside the lambda
func:{raze select compTypeOrigin from .get.order[2021.10.01;string x]}
/ type now 100h (lambda)
q)type func
100h
/ move the each outside
@[func;;show] each list[0 + til 6]