我需要在q / kdb中编写一个函数,它接受一个变量v,如果v是,则返回1b 已定义,如果不是,则为0b:
$ a:2
$ doesExist`a
1b
$ doesExist`b
0b
任何想法都赞赏。
答案 0 :(得分:9)
q)doesExist:{x~key x}
q)a:2
q)doesExist`a
1b
q)doesExist`b
0b
答案 1 :(得分:6)
key`.
将为您提供当前命名空间中的所有变量。
同样
key`.foo
将为您提供.foo
命名空间中的所有变量。
扩展名:
`a in key`.
将为您提供
之后的布尔值答案 2 :(得分:4)
根据MdSalih的回答和小册子的评论,也许我们可以测试相反的情况。如果未定义变量,键会输出一个空列表,我们应该测试它,这可以解决键控表问题。
q)AnswerToLifeUniverseAndEverything:42
q)doesExist:{not () ~ key x}
q)doesExist[`AnswerToLifeUniverseAndEverything]
1b
q)doesExist[`UltimateQuestionToLifeUniverseAndEverything]
0b