You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在kdb/Q中实现比较两值并输出通过/失败信息的单元测试函数?

Q语言自定义单元测试函数checkExpect实现方案

核心逻辑

Q语言中运算符本质是一等函数,可直接作为参数传递;同时需要处理实际值为函数的场景,先执行函数得到结果再做比较,最后根据比较结果返回"Pass"或"Fail"。

代码实现

checkExpect:{[expected; op; actual]
    // 处理实际值:若为函数则执行,否则直接取值
    actualRes: $[type[actual]=10h; actual[]; actual];
    // 调用比较运算符,返回对应结果
    $[op[expected; actualRes]; "Pass"; "Fail"]
}

测试示例

  • 相等比较通过:checkExpect[5; =; 2+3] → 返回 "Pass"
  • 相等比较失败:checkExpect[1; =; 2+3] → 返回 "Fail"
  • 实际值为函数的情况:checkExpect[10; >; {6+3}] → 返回 "Pass"

关键细节说明

  • type[actual]=10h:Q语言中函数的类型码是10h,用于判断传入的实际值是否为函数,是则执行actual[]获取返回值。
  • op[expected; actualRes]:直接调用传入的比较运算符(如=、>等都是内置函数),传入预期值和实际结果得到布尔判断。
  • $[cond; t; f]:Q语言的条件表达式,类似其他语言的三元运算符,根据布尔结果返回对应字符串。

内容的提问来源于stack exchange,提问作者mmv456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:38:09