2014-07-23 2 views
4
I 변수 V를 취 Q/KDB에서 함수를 작성해야

의 기능을 존재와 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`. 

당신에게

MdSalih의 대답과 팜플렛의 의견을 바탕으로
3

, 아마도 우리가 반대를 테스트 할 수 있습니다 후있어 부울을 줄 것이다. 변수가 정의되어 있지 않으면 key는 빈리스트를 출력하기 때문에이를 테스트해야합니다. 그러면 keyed 테이블 문제를 해결할 수 있습니다.

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

멋진 추가 정보! 이것은 매우 편리합니다. –