수색…
통사론
- 만약 expr1이라면? body1 elseif expr2? 그럼? body2 ...? else? ? bodyN?
- 다음 시체를 테스트하기 시작합니다.
- 시험 기관
- foreach varlist1 list1? varlist2 list2 ...? 신체
비고
Tcl에 새로운 컨트롤 구조 추가하기
Tcl에서 제어 구조는 기본적으로 또 다른 명령입니다. 이것은 제어 구조가 do ... until do ... while / do ... until 의 가능한 구현 중 하나입니다.
proc do {body keyword expression} {
uplevel 1 $body
switch $keyword {
while {uplevel 1 [list while $expression $body]}
until {uplevel 1 [list while !($expression) $body]}
default {
return -code error "unknown keyword \"$keyword\": must be until or while"
}
}
}
두 가지 종류의 do -loops의 공통점은 body 라는 스크립트가 항상 한 번 이상 실행된다는 것입니다. 그래서 바로 그 작업을 수행합니다. uplevel 1 $body 는 "호출자의 스택 레벨에서 스크립트 실행"을 의미합니다. 이 방법으로 스크립트에서 사용되는 모든 변수를 볼 수 있으며 생성 된 결과는 호출자의 수준에서 유지됩니다. 그런 다음 스크립트는 keyword 매개 변수에 따라 조건이 true 인 동안 반복할지 또는 false 일 때까지 반복 할지를 선택합니다.이 조건은 조건의 논리 부정이 참인 동안 반복과 동일합니다. 예기치 않은 키워드가 주어지면 오류 메시지가 생성됩니다.
if / while / for
만약 expr1 이라면? body1 elseif expr2 ? 그럼? body2 ...? else? ? bodyN?
exprN 은 부울 값으로 평가되는 표현식입니다. bodyN 은 명령 목록입니다.
set i 5
if {$i < 10} {
puts {hello world}
} elseif {$i < 70} {
puts {enjoy world}
} else {
puts {goodbye world}
}
다음 시체를 테스트 하기 시작합니다.
시작 , 다음 및 본문 은 명령 목록입니다. test 는 부울 값으로 평가되는 표현식입니다.
break 명령은 루프에서 빠져 나옵니다. continue 명령은 루프의 다음 반복으로 건너 뜁니다.
일반적인 사용법은 다음과 같습니다.
for {set i 0} {$i < 5} {incr i} {
puts "$i: hello world"
}
시작 및 다음 은 명령 목록이므로 모든 명령이있을 수 있습니다.
for {set i 0; set j 5} {$i < 5} {incr i; incr j -1} {
puts "i:$i j:$j"
}
테스트 본체 동안
테스트 는 부울 값으로 평가되는 표현식입니다. 테스트 가 사실 인 동안, 시체 가 실행됩니다.
set x 0
while {$x < 5} {
puts "hello world"
incr x
}
break 명령은 루프에서 빠져 나옵니다. continue 명령은 루프의 다음 반복으로 건너 뜁니다.
set lineCount 0
while {[gets stdin line] >= 0} {
puts "[incr lineCount]: $line"
if { $line eq "exit" } {
break
}
}
목록 반복 : foreach
foreach varlist1 list1 ? varlist2 list2 ...? 신체
foreach 는 목록 또는 여러 목록에 대해 반복 할 수있는 강력한 제어 구조입니다.
set alpha [list a b c d e f]
foreach {key} $alpha {
puts "key: $key"
}
여러 변수 이름을 지정할 수 있습니다.
set alphaindexes [list a 1 b 2 c 3 d 4 e 5 f 6]
foreach {key num} $alphaindexes {
puts "key:$key num:$num"
}
동시에 여러 목록을 반복 할 수 있습니다.
set alpha [list a b c d e f]
set indexes [list 1 2 3 4 5 6]
foreach {key} $alpha {idx} $indexes {
puts "key: $key idx:$idx"
}