예를 들어 아래와 같은 리스트가 있다고 보죠.
set list [list sum_r_0_ sum_r_1_ sum_r_10_ sum_r_11_ sum_r_12_ sum_r_13_ sum_r_14_ sum_r_15_ sum_r_2_ sum_r_3_ sum_r_4_ sum_r_5_ sum_r_6_ sum_r_7_ sum_r_8_ sum_r_9_]
위와 같은 특별한 리스트의 경우 예를 들어 중간에 숫자가 나온다던지.. 이런 경우 소트를 하고 싶다면 lsort의 -command 옵션을 사용합니다. 우선 아래와 같은 소트 함수를 만듭니다.
# 숫자를 분리후 서로 비교합니다.
proc compare {one two} {
set one [lindex [split $one _] end-1]
set two [lindex [split $two _] end-1]
if { $one < $two } {
return -1
} elseif { $one > $two} {
return 1
} else {
return 0
}
}
다음 lsort를 호출합니다.
set sorted [lsort -command compare $list]
puts $sorted
결과는 다음과 같습니다.
sum_r_0_ sum_r_1_ sum_r_2_ sum_r_3_ sum_r_4_ sum_r_5_ sum_r_6_ sum_r_7_ sum_r_8_ sum_r_9_ sum_r_10_ sum_r_11_ sum_r_12_ sum_r_13_ sum_r_14_ sum_r_15_
'Tcl & Tk > 팁 (Tip)' 카테고리의 다른 글
Tcl/Tk 소스를 숨기고 독립적인 실행파일을 만드는 가장 간단한 방법 (0) | 2025.03.14 |
---|---|
subst 커맨드: 특정값을 가진 변수이름을 다른 변수에 넣어 사용하기 (0) | 2025.03.14 |
백그라운드 실행 패키지 'jobexec' (0) | 2025.03.14 |
MyTcl Syntax 파일 생성하기 (0) | 2025.03.14 |
MyTcl 사용 라이브러리 목록 얻기 (1) | 2025.03.14 |