tcl
नियंत्रण संरचनाएं
खोज…
वाक्य - विन्यास
- अगर expr1? तो? body1 और अन्य expr2? फिर body2 ...? और? ? BodyN?
- अगले शरीर के लिए परीक्षण शुरू करें
- शरीर का परीक्षण करते समय
- foreach varlist1 list1? varlist2 list2 ...? तन
टिप्पणियों
Tcl में एक नई नियंत्रण संरचना जोड़ना
Tcl में, एक नियंत्रण संरचना मूल रूप से केवल एक अन्य कमांड है। यह नियंत्रण संरचना के do ... while / do ... until do ... while का एक संभावित कार्यान्वयन है।
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 पैरामीटर के आधार पर चयन करती है, चाहे वह स्थिति के सत्य होने तक चलने वाली हो या जब तक कि वह झूठी न हो, जो कि पुनरावृति के समान है, जबकि स्थिति का तार्किक निषेध सत्य है। यदि कोई अनपेक्षित कीवर्ड दिया जाता है, तो एक त्रुटि संदेश उत्पन्न होता है।
अगर / जबकि / के लिए
अगर expr1 ? तो? body1 और अन्य expr2 ? फिर body2 ...? और? ? bodyN?
exprN एक अभिव्यक्ति है जो एक बूलियन मूल्य का मूल्यांकन करता है। bodyN आदेशों की एक सूची है।
set i 5
if {$i < 10} {
puts {hello world}
} elseif {$i < 70} {
puts {enjoy world}
} else {
puts {goodbye world}
}
शुरुआत परीक्षण अगले शरीर के लिए
प्रारंभ , अगला और शरीर आदेशों की सूची है। परीक्षण एक अभिव्यक्ति है जो एक बूलियन मूल्यों का मूल्यांकन करता है।
ब्रेक कमांड लूप से बाहर हो जाएगा। जारी आदेश लूप के अगले पुनरावृत्ति पर छोड़ देगा।
सामान्य उपयोग है:
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
}
ब्रेक कमांड लूप से बाहर हो जाएगा। जारी आदेश लूप के अगले पुनरावृत्ति पर छोड़ देगा।
set lineCount 0
while {[gets stdin line] >= 0} {
puts "[incr lineCount]: $line"
if { $line eq "exit" } {
break
}
}
सूची पुनरावृत्ति: foreach
foreach varlist1 list1 ? varlist2 list2 ...? तन
फोरच एक शक्तिशाली नियंत्रण संरचना है जो एक सूची या कई सूचियों पर लूपिंग की अनुमति देती है।
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"
}