lassign — 리스트의 원소를 변수에 할당하기
lassign — 리스트의 원소를 변수에 할당하기
리스트를 받아서, 그 원소들을 차례대로 여러 변수에 한 번에 담고 싶을 때가 있어요. 한 변수씩 lindex로 꺼내다 보면 코드가 길어지기 마련인데, lassign은 리스트 하나를 변수 여러 개로 한 번에 풀어주는 명령어예요. 변수 개수가 원소보다 많으면 남는 변수는 빈 문자열이 되고, 반대로 원소가 더 많으면 남는 원소들이 리스트로 돌아와요.
출처: 문서
본문
lassign은 값 list를 리스트로 취급해서, 그 안의 원소들을 varName 인수로 주어진 변수들에 순서대로 할당해요. 변수 이름이 리스트 원소보다 많으면, 남는 변수는 빈 문자열로 설정되고, 리스트 원소가 변수보다 많으면 할당되지 않은 원소들의 리스트가 반환돼요.
구문은 다음과 같아요.
lassign list ?varName ...?
여러 개를 한 번에 할당하는 모습과, 원소가 너무 적거나 많을 때 어떻게 되는지 보여주는 예시예요.
lassign {a b c} x y z ;# Empty return
puts $x ;# Prints "a"
puts $y ;# Prints "b"
puts $z ;# Prints "c"
lassign {d e} x y z ;# Empty return
puts $x ;# Prints "d"
puts $y ;# Prints "e"
puts $z ;# Prints ""
lassign {f g h i} x y ;# Returns "h i"
puts $x ;# Prints "f"
puts $y ;# Prints "g"
lassign은 이 밖에도 쓸모가 있어요. 많은 셸 언어의 shift 명령어에 해당하는 동작을 만들 때도 쓸 수 있어요.
set ::argv [lassign $::argv argumentToReadOff]
더 알아보기
lindex,list,lrange,lset,set