如何通过测试验证程序找到kdb函数的等级。
For example -> func: {x+y*10} / rank 2
对于 func 函数,等级为 2,但是如何识别等级是否较低,即 < 2 or >2 并通过程序抛出错误进行验证检查。
请就这个问题提出建议。
q)func: {x+y*10}
//this works with rank 2
q)func [2;4]
42
//the result is projection
q)func [2;]
{x+y*10}[2;]
//this gives rank error
q)func [2;3;4]
'rank
[0] func [2;3;4]
对于“简单”的 lambda,您可以使用:
q)f:{x,y,z}
q)count get[f]1
3
q)f:{[a;b]}
q)count get[f]1
2
尽管当动态加载函数和投影是可能的时候,一般答案会更复杂。
对于可变参数的函数(例如
?
和 enlist
),这可能会更加复杂。副词还可以创建可变函数。