You are here

에러없는 변수 접근법

admin의 아바타

이 팁의 경우는 unset 커맨드를 이용해서 변수를 메모리 상에서 제거한후 실수로 혹은
필요로인해 변수를 엑세스해야 할 경우 버그없는 코드를 만들때 요긴하게 쓰입니다.

아래의 경우같이 존재하지 않는 변수를 엑세스하는 경우 에러가 발생합니다.

if { $test == 1 } { }

info exist 커맨드를 사용해서 변수가 존재하는지 검사한후 체크를 해도 되겠지만,
매번 적어주다 보면 코드가 길어지는 문제가 있습니다.
이런 기능을 하는 함수를 하나 만들어 볼까요?

proc read_var {var} {
        if { [catch {set $var}] } {
                return {}
        }
        return [set $var]
}

아래와 같이 사용합니다.

if { [read_var test] == 1 } {}

존재하지 않는 변수라면 공백을 리턴하고, 존재하는 변수라면 그의 값을 리턴합니다.

포럼: