2015-02-04 4 views
2

로컬 범위에서 변수를 볼 값을 얻으려면 어떻게해야합니까? 예를 들어 :값을 사용하여 함수의 변수 참조

a:2; 

func:{ 
    a:1; 
    value "a" 
} 

반환

+1

이와 같이 value (또는 eval)를 사용할 필요가 없습니다. 그것을하는 더 좋거나 더 청결한 방법이있을 것입니다. 보다 포괄적 인 실제 예제가 도움이 될 것입니다. – terrylynch

+0

새로운 열을 테이블로 업데이트하는 함수 목록을 사용하는 함수가 있습니다. 더 깔끔한 방법은 기능적인 업데이트와 함께하는 것이지만,이 추악한 구문에 대한 대안을 찾는 동안이 문제를 보았습니다. – nightTrevors

+1

어떤 사람들은 매우 못생긴 구문이 아름답다고 말합니다. 그러나 때로는 기능적인 형식이 필요하고, 평가할 문자열로 된 코드 라인을 생성하는 것보다 논란의 여지는 있지만 추한 것입니다. 사용자에게 친숙한 가독성을 유지하면서 기능 양식을 사용하는 한 가지 방법은 Aaron Davies의 "반 기능적"양식과 비슷한 것을 사용하는 것입니다. http://www.q-ist.com/2012/10/functional-query-functions.html 및 http://www.q-ist.com/2013/03/my-kdb-user-meeting-presentation을 참조하십시오. .html – terrylynch

답변

2

value 2는 항상 전역 범위에서 작동합니다.

정말 필요한 경우 작업 영역 변수를 사용하십시오. .a.b:1 ... 작동하는 경우 q 인스턴스를 테스트하지 않아도되지만 거의 확신합니다.

0

'값'대신 다른 기능을 사용할 수 있습니다. 하나의 옵션은 'eval'함수입니다.

 q)a:2; 

     q) func:{ a:1; eval a} 
     q) func[] 
     q) 1