16장: 배열, array

TCL 마스터하기: 배열(Array) 🗃️

1. 배열 개요

TCL의 배열은 연관 배열(associative array) 또는 해시 테이블과 유사한 키-값 쌍의 집합입니다.

2. 배열 생성 및 요소 접근

2.1 배열 요소 설정

set fruits(apple) red
set fruits(banana) yellow
set fruits(grape) purple

2.2 배열 요소 접근

puts $fruits(apple)  # 출력: red

3. array 명령어

array 명령어는 배열을 조작하고 정보를 얻는 데 사용됩니다.

3.1 기본 구문

array 서브커맨드 배열이름 인자

3.2 주요 서브커맨드

  1. array exists: 배열 존재 여부 확인

    if {[array exists fruits]} {
        puts "fruits 배열이 존재합니다."
    }
  2. array size: 배열의 요소 수 반환

    puts [array size fruits]  # 배열의 요소 수 출력
  3. array names: 배열의 모든 키 반환

    foreach key [array names fruits] {
        puts "$key: $fruits($key)"
    }
  4. array get: 배열의 모든 키-값 쌍을 리스트로 반환

    set fruit_list [array get fruits]
    puts $fruit_list  # {apple red banana yellow grape purple} 출력
  5. array set: 리스트로부터 배열 생성 또는 업데이트

    array set colors {
        red    #FF0000
        green  #00FF00
        blue   #0000FF
    }
  6. array unset: 배열 요소 삭제

    array unset fruits grape  # grape 키 삭제
    array unset fruits        # 모든 요소 삭제

4. 배열 순회

4.1 foreach를 사용한 순회

foreach {key value} [array get fruits] {
    puts "$key is $value"
}

4.2 parray 명령어 사용

parray fruits  # 배열 내용을 보기 좋게 출력

5. 다차원 배열

TCL은 컴퓨터 메모리 레벨에서 다차원 배열을 지원하지 않지만, 키 이름을 사용하여 다차원 배열처럼 유사하게 구현할 수 있습니다.

set matrix(1,1) 10
set matrix(1,2) 20
set matrix(2,1) 30
set matrix(2,2) 40

puts $matrix(1,2)  # 출력: 20

6. 배열 vs 리스트

  • 배열: 키를 통한 빠른 접근, 대규모 데이터에 효율적

  • 리스트: 순차적 접근, 사용법이 간단해서 최적화가 필요없는 데이터의 경우, 자주 쓰임.

7. 고급 기능

7.1 array statistics

배열의 내부 구조에 대한 통계 정보를 제공합니다.

puts [array statistics fruits]

7.2 array unset with pattern

패턴을 사용하여 여러 요소를 한 번에 삭제할 수 있습니다.

array unset fruits *a*  # 'a'를 포함하는 모든 키 삭제

8. 성능 고려사항 🚀

  • 큰 데이터셋에서 배열은 리스트보다 효율적입니다.

  • array set은 대량의 데이터를 한 번에 설정할 때 유용합니다.

9. 팁과 요령 💡

  • 배열 이름 충돌을 피하기 위해 네임스페이스를 사용하세요.

  • array 명령어의 다양한 서브커맨드를 활용하여 배열을 효과적으로 관리하세요.

  • 복잡한 데이터 구조가 필요한 경우, 다차원배열 또는 배열의 리스트를 고려해보세요.

Last updated