<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />라는 함수가 있습니다. table_exists .테이블 이름을 문자열로 전달하면 테이블이 있으면 true를, 없으면 false를 반환합니다.나는 최근에 입력 인수가 무엇이든 바인딩되어 있는지 확인하여 업데이트하기로 결정했지만 마음에 들지 않습니다.
예를 들어:
비었다 ( xyz )
로그에 1을 반환합니다. 이는 xyz가 어떤 것에도 바인딩되지 않았음을 의미합니다.하지만 내가 시도하면
table_exists ( xyz )
이 오류 메시지가 나타납니다.
오류: 이름이 확인되지 않음: 'xyz' 액세스 또는 평가의 xyz, xyz
기능은 다음과 같습니다.
table_exists = 기능 ( { 테이블 이름 } ,
{ 기본 로컬 } ,
tbl_exists_flag = 0 ;
만약에 ( ! 비었다 ( 테이블 이름 ) ,
// 모든 테이블을 반복하고 이 테이블이 있는지 확인합니다.
num_tables = ntable () ;
을 위한 ( 나 = 1 , 나 <= num_tables , 나 ++,
one_name = 데이터 테이블 ( 나 ) << 이름 얻기 ;
만약에 ( one_name == 테이블 이름 ,
tbl_exists_flag = 1 ;
부서지다 () ; // 이제 테이블을 찾았으므로 루프에서 점프합니다.
) ;
) ;
) ;
tbl_exists_flag ;
) ;
xyz 변수는 그 값이 함수에 전달될 수 있도록 평가되어야 합니다.
이 문제를 처리하는 두 가지 방법을 생각할 수 있습니다. 주어진 변수를 사용하는 경우 스크립트 시작 시 Empty()에 할당할 수 있습니다. xyz = 비어 있음(). 나중에 이름이 있으면 통과됩니다. 이름을 얻지 못하면 비어 있는 것입니다.
다른 방법은 정의되지 않은 변수를 함수에 전달하기 전에 try에서 함수 호출을 래핑하고 처리하는 것입니다. try(table_exists(xyz), "테이블 이름 없음")
table_exists 함수는 범용이므로 빈 변수로 호출하면 상황을 정상적으로 처리하고 싶었습니다.
함수에 xyz(정의되지 않은 JSL 변수)를 전달하기 때문에 오류 메시지가 있는 것 같습니다. JSL이 함수 코드를 실행하기 전에 xyz를 구문 분석하려고 하는데 비어 있기 때문에 실패한다고 생각합니다. 함수 호출에서 xyz를 따옴표로 묶어 보십시오.
table_exists("xyz")