我需要在q/kdb中编写一个函数,它接受一个变量v,如果v被定义则返回1b,如果不是则返回0b:
$ a:2
$ doesExist`a
1b
$ doesExist`b
0b
Run Code Online (Sandbox Code Playgroud)
任何想法都赞赏.
MdS*_*lih 10
q)doesExist:{x~key x}
q)a:2
q)doesExist`a
1b
q)doesExist`b
0b
Run Code Online (Sandbox Code Playgroud)
key`.
Run Code Online (Sandbox Code Playgroud)
将为您提供当前命名空间中的所有变量.
同样
key`.foo
Run Code Online (Sandbox Code Playgroud)
将为您提供.foo命名空间中的所有变量.
通过扩展:
`a in key`.
Run Code Online (Sandbox Code Playgroud)
会给你你想要的布尔值
小智 5
根据MdSalih的回答和小册子的评论,也许我们可以检验相反的结果。由于如果未定义变量,那么key将输出一个空列表,因此我们应该对此进行测试,以解决键表问题。
q)AnswerToLifeUniverseAndEverything:42
q)doesExist:{not () ~ key x}
q)doesExist[`AnswerToLifeUniverseAndEverything]
1b
q)doesExist[`UltimateQuestionToLifeUniverseAndEverything]
0b
Run Code Online (Sandbox Code Playgroud)