【问题标题】:Exists function in q/kdb存在于 q/kdb 中的函数
【发布时间】:2014-07-23 23:04:36
【问题描述】:

我需要在 q/kdb 中编写一个函数,它接受一个变量 v,如果 v 是则返回 1b 已定义,如果不是,则为 0b:

$ a:2
$ doesExist`a
1b
$ doesExist`b
0b

任何想法表示赞赏。

【问题讨论】:

    标签: kdb


    【解决方案1】:
    q)doesExist:{x~key x}
    q)a:2
    q)doesExist`a
        1b
    q)doesExist`b
        0b
    

    【讨论】:

    • 这可能有效也可能无效,具体取决于 x 引用的项目类型。例如,如果value x 是一个键控表,key x 将返回一个表,而不是符号 x。
    • 谢谢!这对于检查表是否存在也是一个非常有用的命令!
    【解决方案2】:
    key`.
    

    会给你当前命名空间中的所有变量。

    同样

    key`.foo
    

    将为您提供.foo 命名空间中的所有变量。

    通过扩展:

    `a in key`.
    

    会给你你所追求的布尔值

    【讨论】:

      【解决方案3】:

      根据 MdSalih 的回答和小册子的评论,也许我们可以测试相反的情况。由于如果未定义变量,则 key 会输出一个空列表,因此我们应该对此进行测试,从而解决键控表问题。

      q)AnswerToLifeUniverseAndEverything:42
      q)doesExist:{not () ~ key x}
      q)doesExist[`AnswerToLifeUniverseAndEverything]
      1b
      q)doesExist[`UltimateQuestionToLifeUniverseAndEverything]
      0b
      

      【讨论】:

      • 不错的补充!这非常方便。
      • 但如果它是一个空字典则不是
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多