본문 바로가기

foreach를 사용하여 리스트에서 특정 요소들을 하나씩 체크하면서 제거하는 방식은 다음과 같습니다:

# 원래 클록 그룹 리스트
set sync_clock_group {clk1 clk2 clk3}
set elements_to_remove {clk2 clk3}

# 새 리스트 생성
set modified_clock_group {}

# 리스트를 순회하며 요소를 제거
foreach clk $sync_clock_group {
    if { [lsearch $elements_to_remove $clk] == -1 } {
        lappend modified_clock_group $clk
    }
}

# 결과 출력
puts "Modified clock group: $modified_clock_group"

설명:

  • foreach clk $sync_clock_group: sync_clock_group 리스트를 순회합니다.
  • if { [lsearch $elements_to_remove $clk] == -1 }: 현재 요소(clk)가 제거할 리스트에 포함되지 않은 경우(lsearch-1을 반환), 그 요소를 새로운 리스트에 추가합니다.
  • lappend modified_clock_group $clk: 새 리스트에 해당 요소를 추가합니다.

이 두 가지 방법 중 선택해서 사용할 수 있습니다. lsearch 기반의 방법은 짧고 효율적이며, foreach는 조금 더 명시적이고 유연한 처리를 할 수 있습니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.