본문으로 바로가기

에러없는 변수 접근법

category Tcl & Tk/팁 (Tip) 2025. 3. 17. 14:38

이 팁의 경우는 unset 커맨드를 이용해서 변수를 메모리 상에서 제거한 후 실수로 혹은 필요로 인해 변수를 액세스해야 할 경우 버그 없는 코드를 만들 때 요긴하게 쓰입니다. 아래의 경우같이 존재하지 않는 변수를 액세스 하는 경우 에러가 발생합니다.

if { $test == 1 } { }

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

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

아래와 같이 사용합니다. 존재하지 않는 변수라면 공백을 리턴하고, 존재하는 변수라면 그의 값을 리턴합니다.

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