2017-09-28 4 views
0

저는 IDL을 처음 접했고 KEYWORD_SET 찾기가 어려웠습니다. 나는 그것이가는 것을 알았습니다. 나는 그 부분을 노크하는 것이 내가 어려움을 겪고 있다고 생각한다. 나는 키워드에 의해 제한되는 등IDL의 KEYWORD_SET

Pro get_this_done, keyword1 = keyword1 

WW=[3,6,8] 

PRINT,'WW' 
print,WW 

y= WW*3 
IF KEYWORD_Set(keyword1) Then BEGIN 
    print,'y' 
    print,y 

ENDIF 
Return 
END 

WW 인쇄하지만 print, y으로이 문제를 마스터 할 수있는 작은 프로그램을 작성했습니다. y이 인쇄되도록하려면 어떻게 키워드를 삭제해야합니까? 어리석은 질문이지만, 누군가가 나를 기쁘게 할 수 있다면, 좋을 것입니다. 한 후 bBYTE 형 정수 (TRUE 상당도)로 수치를 설정 여기서

답변

0

루틴 컴파일 후에

get_this_done,KEYWORD1=1b 

같은 입력. 그러면 y 변수가 화면에 인쇄됩니다.

KEYWORD_SET 함수는 기본적으로 정의되거나 0이 아닌 많은 유형의 입력에 대해 TRUE을 반환합니다. IF 루프는 인수가 TRUE 일 때 실행됩니다.

1

키워드는 단순히 함수 인수로 전달된다 KEYWORD1에게 함수 내부 INT 1의 값을 줄 것이다

get_this_done, KEYWORD1='whatever' 

또는도

get_this_done, /KEYWORD1 

한다. 함수 내에서 KEYWORD_SET은 키워드가 의미를 가졌는지 여부에 관계없이 모든 값을 전달할 때 1 (TRUE)을 반환합니다. 질문에 대한 보조 노트로 따라서

: 종종 KEYWORD_SET를 사용하지만, 대신 형 쿼리에 의존하지하는 것이 좋습니다 :

IF SIZE(variable, /TNAME) EQ 'UNDEFINED' THEN $ 
    variable = 'default value' 

그것에는 당신이 실제로 올바른 유형을 확인할 수있는 장점 예기치 않은 변수 또는 다른 변수 유형을 처리 할 수 ​​있습니다.

IF SIZE(variable, /TNAME) NE 'LONG' THEN BEGIN 
    IF SIZE(variable, /TNAME) EQ 'STRING' THEN $ 
    PRINT, "We need a number here... sure that the cast to LONG works?" 
    variable = LONG(variable) 
ENDIF