Tcl은 문자열을 첨자로 하는 연상 배열을 사용할 수 있습니다. 배열의 첨자는 괄호안에 임의의 문자열을 지정합니다. 개별적인 배열 요소의 값은 $로 직접 참조할 수 있습니다. 또한 parray 커맨드를 사용하여 모든 배열 요소의 값을 표시할 수 있습니다.
parray ary
=> ary(이름) = 민인학
=> ary(연령) = 31세
=> ary(성별) = 남
배열명과 첨자는 변수값과 커맨드의 결과를 사용할 수 있습니다. 단, 배열명에 변수값을 사용한 경우는, 중 괄호 ( {..} )를 사용해야 합니다.
set index 이름
set ary($index) 민인학
set ary($index)
=> 민인학
set x $ary($index)
=> 민인학
아래는 배열명의 첨자에 변수값을 사용한 예입니다. for로 루프를 돌며 배열을 생성합니다.
array 커맨드는 배열을 조작하기 위한 커맨드 입니다. array set 커맨드를 사용하면 리스트로부터 배열을 생성할 수 있습니다.
parray ary
=> ary(이름) = 민인학
=> ary(연령) = 31세
=> ary(성별) = 남
array 커맨드는 아래의 옵션을 지원합니다.
array exists arrayName | arrayName이라는 배열이 존재하면 1을 리턴. 그렇지 않으면 0을 리턴. |
---|---|
array get arrayName ? pattern? | 패턴에 매치되는 첨자의 요소를 리스트로 리턴한다. 패턴을 생략한 경우는, 모든 요소의 리스트를 리턴한다. 패턴은 glob형식을 사용한다. |
array names arrayName ? pattern? | 패턴에 매치되는 첨자를 리턴한다. 패턴을 생략한 경우는 모든 첨자를 리턴한다. |
array set arrayName list | 리스트로부터 배열을 생성한다. |
array size arrayName | 배열의 요소갯수를 리턴한다. |
array unset arrayName ? pattern? | 패턴에 매치되는 첨자의 요소를 삭제한다. 패턴을 생략한 경우는 배열을 삭제한다. |
배열을 리스트로 변환하는 예입니다.
배열의 첨자를 리스트로 변환하는 예입니다.
배열을 복사하는 예입니다.
Tcl의 연상 배열은 1차원 배열이지만, 첨자가 문자열인것을 이용하여 아래와 같이 10x10의 2차원 배열과 같은 것도 표현 가능합니다.