如何查找 kdb 函数的排名并抛出错误

问题描述 投票:0回答:1

如何通过测试验证程序找到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]
kdb
1个回答
0
投票

对于“简单”的 lambda,您可以使用:

q)f:{x,y,z}
q)count get[f]1
3
q)f:{[a;b]}
q)count get[f]1
2

尽管当动态加载函数和投影是可能的时候,一般答案会更复杂。

对于可变参数的函数(例如

?
enlist
),这可能会更加复杂。副词还可以创建可变函数。

© www.soinside.com 2019 - 2024. All rights reserved.