2014-07-23 45 views
4

我需要寫在Q/KDB一個函數,它接受一個變量v exists函數,如果它是不如果v是 定義和0B返回1B:在Q/KDB

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

任何想法理解。

回答

7
q)doesExist:{x~key x} 
q)a:2 
q)doesExist`a 
    1b 
q)doesExist`b 
    0b 
+2

這可能或可能不工作,這取決於產品的用x引用的類型。例如,如果'value x'是一個鍵控表,'key x'將返回一個表,而不是符號x。 – pamphlet

+0

謝謝!這對於檢查表是否存在也是非常有用的命令! –

3
key`. 

會給你當前命名空間中的所有變量。

同樣

key`.foo 

會給你在.foo命名空間中的所有變量。

推而廣之:

`a in key`. 

會給你,你以後

3

基於MdSalih的答案和小冊子的評論,也許我們可以測試對面的布爾值。因爲如果變量沒有定義,key會輸出一個空列表,所以我們應該測試一下,這會讓我們圍繞keyed table問題。

​​3210
+0

不錯的加法!這非常方便。 –